shutil是Python中的高级文件处理模块,可以使用它来对文件进行更细粒度的操作,如仅复制权限、内容、属组、用户、状态等信息,而且shutil模块还可以做到对压缩文件进行简单的处理。
Python Version: 3.5+
将文件内容拷贝到另一个文件中
shutil.copyfileobj(fsrc, fdst[, length])
1 | import shutil |
拷贝文件
shutil.copyfile(src, dst)
1 | shutil.copyfile('f1.log', 'f2.log') |
仅拷贝权限。内容、组、用户均不变
shutil.copymode(src, dst)
1 | shutil.copymode('f1.log', 'f2.log') |
仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copystat(src, dst)
1 | shutil.copystat('f1.log', 'f2.log') |
拷贝文件和权限
shutil.copy(src, dst)
1 | import shutil |
拷贝文件和状态信息
shutil.copy2(src, dst)
1 | import shutil |
递归的去拷贝文件夹
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
1 | import shutil |
复制中软连接的问题:如果symlinks为True,那么软连接的文件会被copy到目标目录中,如果symlinks为False,那么只会将软连接进行copy,假如链接的目录不存在则会抛出异常
1 | import shutil |
递归的去删除文件
shutil.rmtree(path[, ignore_errors[, onerror]])
1 | import shutil |
递归的去移动文件/重命名,类似mv命令
shutil.move(src, dst)
1 | import shutil |
压缩文件的处理
shutil.make_archive(base_name, format,…)
参数说明:
- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
- 如:docs.tar.gz => 保存至当前路径,并以此为文件名
- 如:/Users/PolarSnow/docs.tar.gz =>保存至/Users/PolarSnow/ 并以docs.tar.gz的文件名保存
- format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象
1 | # 将 /Users/polarsnow/Downloads/docs 下的文件打包放置当前程序目录 |