python中的shutil模块
shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数。
目录和文件操作
- shutil.copyfileobj(fsrc, fdst[, length]):拷贝文件内容到另一个文件,可以指定拷贝的大小。
# 拷贝test1的内容到test2
>>> shutil.copyfileobj(open('test1'),open('test2','w'))
- shutil.copyfile(src, dst):拷贝文件,不包含元数据。
- shutil.copymode(src, dst):仅拷贝文件权限,对文件内容、用户和组不影响。
- shutil.copystat(src, dst):仅拷贝文件权限、最后访问时间、最后修改时间,对文件内容、用户和组不影响。
- shutil.copy(src, dst):拷贝文件数据和权限,不含文件的创建时间和修改时间。
- shutil.copy2(src, dst):拷贝文件,包含元数据
- shutil.ignore_patterns(*patterns):忽略指定的文件,通常和copytree配合使用
- shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False):递归复制目录及其子目录的文件和状态信息。
# 递归复制Python3目录中的文件到Python4中,其中忽略以点m4和py结尾的文件。
>>> shutil.copytree('Python3','Python4',ignore=shutil.ignore_patterns('*.m4','*.py'))
- shutil.rmtree(path):递归删除目录
- shutil.move(src, dst, copy_function=copy2):递归移动文件或者目录,如mv
- shutil.disk_usage(path):以元组的形式返回一个磁盘统计信息(total,used,free)
- shutil.chown(path, user=None, group=None):改变path的用户和组
- shutil.which(cmd):返回执行cmd的绝对路径,类似于shell中的which cmd
归档操作
- shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]]):打包文件或者压缩文件,如tar,zip。
- base_name:打包后的文件名
- format:压缩格式,如:zip,tar,gztar,bztar,xztar
- root_dir:打包的根目录
- base_dir:要进行压缩的源文件或者目录,root_dir和base_dir both默认为当前目录
- dry_run: 如果为True,打包文件将不会创建,但是会进行日志记录
- owner,group:指定用户和组,默认是当前环境用户和组
- logger:用于记录日志,通常是logging.Logger的一个实例
- shutil.get_archive_formats():返回支持的归档格式的列表
- shutil.unpack_archive(filename[, extract_dir[, format]]):解压缩一个归档文件
- filename:压缩文档的绝对路径
- extract_dir:解压缩路径,默认当前目录
- format:压缩格式,默认使用文件后缀名的格式
- shutil.get_unpack_formats():返回支持解压缩格式的列表