os模块-subprocess 模块- configpaser 模块
一. os 模块 主要用于处理与操作系统相关操作,最常用文件操作 使用场景:当需要操作文件及文件夹(增,删,查,改) os.getcwd()? 获取当前工作目录 os.chdir(‘dirname‘)? 改变当前工作目录,相当 shell 下的 cd os.curdir? 返回当前目录? ?(‘ . ’) os.pardir? 获取当前目录的父目录字符串名: (‘ .. ‘) os.makedirs(‘abc‘)? 生成多层目录 os.removedirs(‘ ‘)? 若目录为空,则删除 os.mkdir()? 生成单级目录。 shell? 中 mkdir dirname os.rmdir()? ?删除文件夹,必须保证文件夹是空的 os.listdir()? 列出文件夹下的所有子文件夹和文件目录,放在列表中 os.remove() 删除文件 for f in os.listdir(‘a‘): f_path=path +‘‘ + f os.remove(f_path) os.rename(‘old‘,‘new‘)? 重命名 os.stat(‘ os模块.py‘)? ?获取文件详细信息 os.sep? ?获取当前操作系统路径分隔符(Linux ‘/’? ? windows:? ) os.linesep? ?输出当前平台使用的行终止符? win(‘ tn‘)? linux (n) ?os.name? ?输出字符串只是当前使用平台? ? ? win: ‘nt‘? ? ? Linus:? ‘posix‘ os.system(‘bash command‘)? 运行shell命令,直接显示 os.environ? 获取系统环境变量 二. os.path 模块 用于处理路径,将所有与路径相关进行封装(有利于跨平台操作,各平台路径书写方式不同) os.path.abspath() 返回绝对路径,不管文件是否存在 os.path.split(path)? ?将目录分割成目录和文件名两部分 os.path.dirname(path)? 返回path目录,不包括path os.path.basename(path)? 返回path最后的文件名 os.path.exists(path) 判断path是否存在,返回True False os.path.isabs(path)? 判断是否为绝对路径 os.path.isfile(path)? 判断是否是一个存在的文件 os.path.isdir(path) 判断是否为存在的目录 os.path.join(path1,path2)? 路径拼接 os.path.getatime(path)? 返回最后存取时间 os.path.getmtime(path)? 返回最后修改时间 os.path.getsize(path) 返回path 的大小 os.path.normcase(path)? ?规范路径,所有字符转换为小写,并将所有斜杠转换为饭斜杠。 os.path.normpath(path..) 可以返回上级目录 总结:主要用于处理路径,不关心路径是否存在。通常与os模块一起使用 三. subprocess 模块 进程:一个正在运行的程序 子进程:由另一个正在运行的程序启动的程序(有一个任务需要处理,而自己的程序无法处理,开启另一个程序) cmd 中: tasklist | findstr cmd? ? ( | 表示管道) os.system(‘tasklist‘)? 也可以启动子进程,只能打印在屏幕上,不能拿到结果 使用 subprocess: 不仅可以启动子进程,还能与子进程进行数据交互 # 启动dir 子程序,将结果输出到指定管道 # ‘dir‘ : dir 命令 # shell=True : 告诉python,dir是命令 # stdout: 指定输出管道 # PIPE管道: 将数据从一个进程通向另一个进程 总结: os.system : 仅启动了子进程 subprocess: 启动子进程,并进行数据交互 ?四. configpaser 模块 配置文件解析 配置信息: 数据值不确定, 可以由用户指定 .cfg? 为配置文件 配置文件编写格式: 1. section: 分区? ?===》 分区名称不能重复 2. option :? 选项? ? ?===》同一分区下不能有重复的option test.cfg 文件格式 [mysql] uname=pack password=123 [count] a=1 # 取读配置信息两步: # 修改,增加分区和option import configparser cfg=configparser.ConfigParser() cfg.read(‘test.cfg‘,encoding=‘utf-8‘) # 增加分区 cfg.add_section(‘christmas‘) # 增加option cfg.set(‘mysql‘,‘port‘,‘3345‘) # 修改option cfg.set(‘mysql‘,‘uname‘,‘egon‘) with open(‘test.cfg‘,‘wt‘,encoding=‘utf-8‘) as f: cfg.write(f) #删除分区或option cfg=configparser.ConfigParser() cfg.read(‘test.cfg‘,encoding=‘utf-8‘) cfg.remove_section(‘christmas‘) cfg.remove_option(‘mysql‘,‘uname‘) #判断是否存在分区或option cfg.has_option(‘mysql‘,‘password‘) cfg.has_section(‘christmas‘) with open(‘test.cfg‘,encoding=‘utf-8‘) as f: cfg.write(f) 总结: read 取读配置文件 add_section() 添加分区 set? 如果没有这个选项则添加 remove_section 删除分区 remove_option 删除选项 has_option() 判断是否有选项 has_section 判断是否有分区 ? 五. shutil 模块 是一个工具包,封装了文件高级操作,功能与os 有些重叠,os只能处理文件是否存在,路径是否正确等,无法直接完成copy等操作 shutil 还提供了压缩和解压缩 复制文件: import shutil # 复制文件 shutil.copyfile(r‘D:脱产5期内容shutil模块.py‘,r‘D:脱产5期内容shutil模块.py2‘) #压缩文件 shutil.make_archive(base_name,format,root_dir=None,base_dir=None ) shutil.make_archive(‘shutil模块‘, shutil.unpack_archive(r"shutil模块.zip",r"D:脱产5期内容day19shutil模块解压的文件夹",r"zip") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |