第二十天 模块 sys os os下path settings random shuit

时间:2022-05-23 07:27:45

一.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下为"\t\n",Linus下为'\n'
  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期\day19\db\高根db.txt"
LOG_PATH = r"D:\上海python全栈4期\day19\log\log.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()) #- 不包括1随机浮点数
print(random.randint(,)) # - 包括1和10 的整数
print(random.randrange(,)) # -10包括1 不包括10的整数
print(random.sample(["aaa",["a","b"],,,],)) # 指定一个范围并指定需要的随机个数
ls = ["","","",""]
random.shuffle(ls) # 打乱顺序 洗牌 改的原有列表
print(ls)
print(random.choice([,,])) # 随机选一个
print(random.choices([,,,,,,],k=)) # 随机选指定个数 # 随机验证码 长度自定义 包括0- A-Z a-z
def get_auth_code(length):
res = ""
for i in range(length):
a = random.randint(,)
b = chr(random.randint(,))
c = chr(random.randint(,))
s = random.choice([a,b,c])
res += str(s)
return res print(get_auth_code())

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练习一下