os模块:提供了一种使用与操作系统相关的功能的便捷式途径
os.path模块 :操作文件路径
glob模块:Unix 风格路径名模式扩展
shutil 模块:对于高级文件和目录处理
open():读写一个文件
fileinput模块 :读取通过命令行给出的所有文件中的所有行
tempfile模块 :创建临时文件和目录
os模块
提供了一种使用与操作系统相关的功能的便捷式途径。
import os
# 获取系统CPU的数量
os.cpu_count()
# 检验权限模式 777可读可写可执行
os.access(path, mode=777)
# 更改权限为777
os.chmod(path, mode=777)
# 更改当前进程的根目录
os.chroot(path)
# 改变当前的工作目录
os.chdir(path)
# 获取当前工作目录
os.getcwd()
# 获取指定path包含的文件或文件夹的名字列表
names = os.listdir(path)
# 获取指定路径下包含所有的文件夹和文件(含子目录), 返回值为生成器 每次遍历的对象都是返回的是一个三元元组(root,dirs,files)
# root 所指的是当前正在遍历的这个文件夹的本身的地址
# dirs 是一个list ,内容是该文件夹中所有的目录的名字(不包括子目录)
# files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
os.walk(top, topdown=True, οnerrοr=None, followlinks=False)
# 创建指定目录, 目录存在会报错
os.mkdir(path)
# 递归创建目录, exist_ok=True时, 目录存在不报错
os.makedirs(name, exist_ok=False)
# 删除文件. 传入文件夹会报错
os.remove(file)
# 删除空文件夹
os.removedirs(path)
# 删除空目录. 目录非空,报错OSError
os.rmdir(path)
案例: 给定路径下, 找出包含子目录在内的所有.txt文件
import os
path = r'D:\Workspace\NavBatch\DataTest\T5'
for root, dirs, files in os.walk(path):
# root: 当前正在遍历的这个文件夹的路径
# dirs: 当前正在遍历的这个文件夹中所有目录的名字列表(不包括子目录)
# files: 当前正在遍历的这个文件夹中所有文件的名字列表(不包括子目录)
for file in files:
# 以.txt结尾
if file.endswith(".txt"):
print(os.path.join(root, file))
案例: 给定路径下, 找出包含子目录在内的所有包含de1-de9的文件
import os
import glob
path = r'D:\Workspace\NavBatch\DataTest\T5'
de_list = []
for root, dirs, files in os.walk(path):
temp_list = glob.glob(os.path.join(root, '*de[1-9]*'))
for log in temp_list:
de_list.append(log)
print(de_list)
os.path模块
常用操作文件路径以及获取文件属性
import os
# os.path 获取文件属性
path = r'D:\Workspace\data\data.csv'
# 返回绝对路径
os.path.abspath(path)
# 返回软链的地址
os.path.realpath(path)
# 返回文件名
os.path.basename(path)
# 返回文件或者目录的上一级目录
os.path.dirname(path)
# 判断路径是否存在
os.path.exists(path)
# 判断是否为绝对路径
os.path.isabs(path)
# 判断路径是否为文件
os.path.isfile(path)
# 判断路径是否为目录
os.path.isdir(path)
# 判断路径是否为链接
os.path.islink(path)
# 判断路径是否为挂载点
os.path.ismount(path)
# 把path中包含的"~"和"~user"转换成用户目录
os.path.expanduser(path)
# 根据环境变量的值替换path中包含的"$name"和"${name}"
os.path.expandvars(path)
# 返回最近访问时间(浮点型秒数)
os.path.getatime(path)
# 返回最近文件修改时间
os.path.getmtime(path)
# 返回文件 path 创建时间
os.path.getctime(path)
# 返回文件大小,如果文件不存在就返回错误
os.path.getsize(path)
# 把目录和文件名合成为一个路径
os.path.join('./data', 'test.csv')
# 把路径分割成 目录 和 文件名,返回一个元组
os.path.split(path)
# ('D:\\Workspace', 'data.csv')
# 分割路径,返回路径名和文件扩展名的元组
os.path.splitext(path)
# ('D:\\Workspace\\data', '.csv')
# 一般用在windows下,返回驱动器名和路径组成的元组
os.path.splitdrive(path)
# 把路径分割为加载点与文件
os.path.splitunc(path)
# 判断目录或文件是否相同
path2 = './data.csv'
os.path.samefile(path, path2)
# 转换path的大小写和斜杠
os.path.normcase(path)
# 规范path字符串形式
os.path.normpath(path)
glob模块
glob 支持 * ? [] 这三种通配符
* 代表0个或多个字符
? 代表一个字符
[] 匹配指定范围内的字符,如[0-9]匹配数字
案例: glob + os.path 筛选文件
import glob
import os
# 筛选指定目录下的py文件
py_list = glob.glob(os.path.join(path, '*.py'))
# 筛选指定路径下包含de1-de9的文件
de_list = glob.glob(os.path.join(path, '*de[1-9]*'))
shutil模块
提供了一系列对文件和文件集合的高阶操作,特别是提供了一些支持文件拷贝和删除的函数
import shutil
# shutil.copyfileobj(fsrc, fdst[, length])
# 将文件内容拷贝到另一个文件中
shutil.copyfileobj(open('old.xml', 'r'), open('new.xml', 'w'))
# 拷贝文件 目标文件无需存在
shutil.copyfile('src.py', 'dst.py')
# 仅拷贝权限。内容、组、用户均不变 目标文件必须存在
shutil.copymode('src.py', 'dst.py')
# 仅拷贝状态的信息,包括:mode bits, atime, mtime, flags 目标文件必须存在
shutil.copystat('src.py', 'dst.py')
# 拷贝文件和权限
shutil.copy('src.py', 'dst.py')
# 递归拷贝除.pyc文件和以tmp打头的文件或目录以外的所有条目 目标目录不能存在
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
# 递归删除文件夹
shutil.rmtree('test', ignore_errors=False, onerror=None)
# 递归移动文件, 重命名
shutil.move('src.py', 'dst.py')
# 创建压缩包并返回文件路径.
# 将/data下的文件压缩为gztar格式, 放置在/temp/data_bak
shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')