Python的 shutil 模块

Python 的 shutil 模块(shutil 是 “shell utility” 的缩写)提供了一系列用于高级文件和目录操作的函数,它可以让你完成许多与文件系统相关的任务,以下是 shutil 包中一些主要的功能分类及对应函数:

1. 文件和目录复制

shutil.copyfile(src, dst)

功能:将源文件 src 的内容复制到目标文件 dst,只复制文件内容,不复制文件的元数据(如权限等)。如果目标文件已存在,会被覆盖。示例:

import shutil

shutil.copyfile('source.txt', 'destination.txt')

shutil.copy(src, dst)

功能:复制文件 src 到目标 dst,如果 dst 是目录,则在该目录下创建与源文件同名的文件;如果 dst 是文件,则覆盖该文件。会尝试复制文件的权限。示例:

import shutil

shutil.copy('source.txt', 'destination_folder')

shutil.copy2(src, dst)

功能:与 shutil.copy 类似,但会尽可能多地复制文件的元数据,包括文件的创建时间、修改时间等。示例:

import shutil

shutil.copy2('source.txt', 'destination.txt')

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)

功能:递归地复制整个目录树,将源目录 src 及其所有子目录和文件复制到目标目录 dst。目标目录不能已存在。示例:

import shutil

shutil.copytree('source_folder', 'destination_folder')

2. 文件和目录移动

shutil.move(src, dst)

功能:递归地将文件或目录从 src 移动到 dst。如果 dst 是一个已存在的目录,则 src 会被移动到该目录下;如果 dst 是一个文件,则会覆盖该文件。示例:

import shutil

shutil.move('source_folder', 'destination_folder')

3. 文件和目录删除

shutil.rmtree(path, ignore_errors=False, onerror=None)

功能:递归地删除目录树,即删除指定目录及其所有子目录和文件。示例:

import shutil

shutil.rmtree('folder_to_delete')

4. 压缩和解压缩

shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)

功能:创建压缩文件,支持多种压缩格式,如 'zip'、'tar'、'gztar'、'bztar' 和 'xztar' 等。示例:

import shutil

shutil.make_archive('archive_name', 'zip', 'folder_to_compress')

shutil.unpack_archive(filename, extract_dir=None, format=None)

功能:解压压缩文件,会自动根据压缩文件的扩展名来判断压缩格式。示例:

import shutil

shutil.unpack_archive('archive.zip', 'extract_folder')

5. 磁盘使用情况

shutil.disk_usage(path)

功能:返回指定路径所在磁盘的使用情况,返回一个包含总空间、已使用空间和可用空间的命名元组。示例:

import shutil

usage = shutil.disk_usage('/')

print(f"Total: {usage.total}, Used: {usage.used}, Free: {usage.free}")

6. 权限管理

shutil.chown(path, user=None, group=None)

功能:更改文件或目录的所有者和组。在 Windows 系统上,此函数可能会引发 NotImplementedError。示例:

import shutil

shutil.chown('file.txt', user='new_user', group='new_group')


电视&影音
中国移动合约机如何解除合约