python 之 shutil 文件的复制、删除、移动文件以及目录,并支持文件的归档、压缩和解压
一、shutil
shutil 模块于文件和文件集合的高级操作,包括:复制、删除、移动文件以及目录,并支持文件的归档、压缩和解压等
二、使用例子
-
复制文件及权限
shutil.copy(src, dst)复制文件及权限;src 和 dst 文件路径。dst 文件名或目标目录shutil.copy('data/test.txt', 'utils') # 复制文件及权限 shutil.copy2('data/test.txt', 'utils') # 复制文件及状态信息# 拷贝源文件写入新文件 shutil.copyfileobj(open('data/test.txt', 'r'), open('data/test.txt', 'w')) shutil.copyfile('data/test.txt', 'data/test1.txt')# 拷贝文件夹、忽略拷贝哪些文件 shutil.copytree('data', 'utils', ignore=shutil.ignore_patterns("*.py", 'user*'))
-
shutil.move(src, dst)
: 移动文件或重命名shutil.move('data/test.txt', 'utils')
-
shutil.rmtree(path)
:删除文件夹
和文件夹内所有的内容shutil.rmtree('data')
-
shutil.copystat(src, dst, *, follow_symlinks=True)
复制文件的权限位、最后访问时间、最后修改时间和标记
不会复制文件内容,只复制文件的状态信息import os # 修改源文件的访问时间和修改时间 os.utime('src.txt', (1629380400, 1629380400)) # 复制源文件的状态到目标文件 shutil.copystat('src.txt', 'dst.txt') # 打印两个文件的状态 print(os.stat('src.txt')) print(os.stat('dst.txt'))
-
shutil.copymode(src, dst)
复制文件的权限# 调用 copymode 方法将 'data/test.txt' 文件的权限复制到 'data/test1.txt' shutil.copymode('data/test.txt', 'data/test1.txt')
目标文件已存在,shutil.copymode() 会改变它的权限来匹配源文件的权限
目标文件不存在,shutil.copymode() 会抛出一个 FileNotFoundError 异常
源文件的权限无法获取,那么 shutil.copymode() 会抛出一个 PermissionError 异常 -
shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])
: 压缩文件(如 zip 或 tar)shutil.make_archive('data', 'zip', 'data')
zipfile、tarfile 压缩文件、与解压缩文件
-
shutil.which()
于检查操作系统是否可以执行某个命令。本质上,它检查给定命令是否在环境变量中列出的任何目录中可用PATH
该函数返回调用给定命令时将运行的可执行文件的绝对路径path = shutil.which('python') print(path)/Users/python/PycharmProjects/security/bin/python