• sys os os下path settings random shuit 模块


    一.sys模块

    1.sys.argv 命令行参数List,第一个元素是程序本身路径

    2.sys.exit(n) 退出程序,正常退出时exit(0)

    3.sys.version 获取Pythonn解释程序的版本信息

    4.sys.maxint 最大的int值

    5.sys.path 返回模块的搜索路径,初始化使用PYTHONPATH环境变量的值

    6.sys.platform 返回操作系统平台名称

    拓展

    脚本执行时 很多时候需要使用进度条

    如何实现

    print("[###])

    print('[####]")

    print("[#####]")

    分析:

      中括号位置实固定的变化的时里面的符号

        格式化替换加占位 print("[%-50s]"%"#")

      人家的是不换行的一直在一行刷新进度

        实际上是新的内容覆盖了旧的内容感觉像是动画

      中括号的宽度应该是不固定的 根据cmd进行调整 所以当做参数传进来

        于是print("[%-%ds]")

        发现不行说你传参传多了

      定义为方法

      不换行打印 并将光标移动至行其实

     二.os模块

      os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径

      os.chdir("dirname")

         os.curdir 返回当前目录:(',')

      os.pardir 获取当前目录的父目录字符串名:('..')

      os.makedirs('dirname1/dirname2') 可生成多层递归目录

      os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空

      则删除,依此类推.

      os,mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname

      os.rmdir('diname') 删除单级空目录,若目录不为空则无法删除,报错;相

      当于shell中rmdir dirname

      os,listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,

      并以列表的方式打印

      os.remove()删除一个文件

      os.rename('oldname','newname')重命名文件/目录

      os.stat('path/filename') 获取文件/目录信息

      os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为
      os.linesep 输出当前平台使用的行终止符,win下为" ",Linus下为' '
      os.pathsep 输出用于分割文件路径的字符串 win 下为;,Linux为:
      os.name输出字符串指示当前使用平台 win->'nt';Linux->'posix'
      os.system('bash command')运行shell命令,直接显示
      os.environ 获取环境变量
     

    三 path模块

      os.path.abspath(path) 返回path规范化的绝对路路径
      os.path.split(path) 将path分割成⽬目录和⽂文件名⼆二元组返回
      os.path.dirname(path) 返回path的⽬目录。其实就是os.path.split(path)的第
      ⼀一个元素
      os.path.basename(path) 返回path最后的⽂文件名。如何path以/或结尾,
      那么就会返回空值。即os.path.split(path)的第⼆二个元素
      os.path.exists(path) 如果path存在,返回True;如果path不不存在,返回
      False
      os.path.isabs(path) 如果path是绝对路路径,返回True
      os.path.isfile(path) 如果path是⼀一个存在的⽂文件,返回True。否则返回False
      os.path.isdir(path) 如果path是⼀一个存在的⽬目录,则返回True。否则返回
      False
      os.path.join(path1[, path2[, ...]]) 将多个路路径组合后返回,第⼀一个绝对路路径之
      前的参数将被忽略略
      os.path.getatime(path) 返回path所指向的⽂文件或者⽬目录的最后存取时间
      os.path.getmtime(path) 返回path所指向的⽂文件或者⽬目录的最后修改时间
      os.path.getsize(path) 返回path的⼤大⼩小

      # normcase ⽤用于将路路规范化 会将⼤大写转为⼩小写 斜杠改为当前系统分隔符
      print(os.path.normcase("\a\b\ABCS"))
      # normpath⽤用于将路路径规范化 不不仅将⾮非法的分隔符替换为合法分隔符 还将
      ⼤大写转为⼩小写 并且会执⾏行行..的回到上⼀一层
      print(os.path.normpath("/a/b/../ABCS"))

    5.settings

    import os
    # 直接写死不能跨平台 尽量使用下面两种
    DB_PATH = r"D:上海python全栈4期day19db高根db.txt"
    LOG_PATH = r"D:上海python全栈4期day19loglog.txt"
    
    # 第二种拼接方式  跨平台
    # 先获取当前路径
    # BASE_DIR2 = os.path.dirname(os.path.dirname(__file__))
    # LOG_PATH2 = os.path.join(BASE_DIR2,"log","log.txt")
    # print(LOG_PATH2)
    
    # 第三种拼接方式 跨平台
    print(os.path.normpath(__file__))
    print(os.path.normpath(os.path.join(__file__,"..","..","log","log.txt")))

    添加工程根目录至环境变量 要求可以跨平台

    import sys,os
    
    # 项目的根目录
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    
    # 将得到的结果 添加到环境变量中
    sys.path.append(BASE_DIR)

    6 随机模块random

    import random
    # 随机数模块
    
    print(random.random())  #0-1 不包括1随机浮点数
    print(random.randint(1,10)) # 1-10 包括1和10 的整数
    print(random.randrange(1,10)) # 1-10包括1 不包括10的整数
    print(random.sample(["aaa",["a","b"],3,4,5],2)) # 指定一个范围并指定需要的随机个数
    ls = ["1","2","3","4"]
    random.shuffle(ls) # 打乱顺序  洗牌 改的原有列表
    print(ls)
    print(random.choice([1,2,3])) # 随机选一个
    print(random.choices([1,2,3,4,5,6,7],k=2)) # 随机选指定个数
    
    
    # 随机验证码 长度自定义 包括0-9 A-Z a-z
    def get_auth_code(length):
        res = ""
        for i in range(length):
            a = random.randint(0,9)
            b = chr(random.randint(65,90))
            c = chr(random.randint(97,122))
            s = random.choice([a,b,c])
            res += str(s)
        return res
    
    
    print(get_auth_code(4))

    7 shutil 模块

      非常简便便的⽂文件操作 压缩包处理理模块
      shutil.copyfileobj 拷⻉贝⽂文件 提供两个⽂文件对象 ⻓长度表示缓冲区⼤大⼩小
      shutil.copyfile(src, dst) 拷⻉贝⽂文件 提供两个⽂文件路路径
      shutil.copymode() 拷⻉贝⽂文件权限 提供两个⽂文件路路径
      shutil.copystat(src, dst) 拷⻉贝⽂文件状态信息 最后访问 最后修改 权限 提供两
      个⽂文件路路径
      shutil.copy(src, dst) 拷⻉贝⽂文件和权限 提供两个⽂文件路路径
      shutil.copy2(src, dst) 拷⻉贝⽂文件和状态信息 提供两个⽂文件路路径
      shutil.ignore_patterns("mp3","*.py")
      shutil.copytree(src, dst, symlinks=False, ignore=None) 拷⻉贝⽬目录
      symlinks默认False将软连接拷⻉贝为硬链接 否则拷⻉贝为软连接
      shutil.rmtree 删除⽬目录 可以设置忽略略⽂文件
      shutil.move(src, dst)
    移动⽬目录和⽂文件

    8.压缩与解压缩
      shutil 可以打包 但是⽆无法解包 并且打包也是调⽤用tarfile 和 zipFile完成
      解压需要按照格式调⽤用对应的模块
      打包
      shutil.make_archive("test","tar","/Users/jerry/PycharmProjects/package/packa
      ge1")
      import tarfile,zipfile
      zip压缩
      z = zipfile.ZipFile("test.zip","w")
      z.write("sys.py")
      z.write("start.py")
      z.close()
      zip解压
      z = zipfile.ZipFile("test.zip",'r')
      z.extractall("/Users/jerry/PycharmProjects/package/aaa")
      z.close()
      tar压缩
      t = tarfile.open("test.tar","w")
      t.add("start.py")
      t.add("sys.py")
      t.close()
      tar解压
      t = tarfile.open("test.tar")
      t.extractall("aaa/")
      t.close()


    2.把今天讲的shutil os sys练习一下

  • 相关阅读:
    2017-2018-2 20179225《网络攻防与实践》 第5周作业
    NetSec2019 20165327 Exp3 免杀原理与实践
    NetSec2019 20165327 Exp2 后门原理与实践
    NetSec2019 20165327 Exp1 PC平台逆向破解
    NetSec2019 20165327 Exp0 Kali安装 Week1
    实验五 通讯协议设计
    2018-2019-1 20165307 20165327 20165332 实验四 外设驱动程序设计
    2018-2019-1 20165327 《信息安全系统设计基础》第八周学习总结
    实现mypwd&mybash&myod&读者写者
    2018-2019-1 20165327 实验三 实时系统
  • 原文地址:https://www.cnblogs.com/gongcheng-/p/9799341.html
Copyright © 2020-2023  润新知