shutil
是 Python 的一个内置库,提供了对文件和目录进行高级操作的函数集合。以下是一些常用的 shutil
库方法及其用法:
-
复制文件:使用
shutil.copy(src, dst)
可以复制单个文件。src
是源文件路径,dst
是目标路径,可以是文件路径或目录路径 。 -
复制目录:使用
shutil.copytree(src, dst)
可以复制整个目录及其内容。注意,目标目录dst
不应该已经存在 。 -
移动文件/文件夹:使用
shutil.move(src, dst)
可以移动文件或文件夹到新位置。这在重命名文件时也很有用 。 -
删除文件:使用
shutil.remove(path)
可以删除单个文件 。 -
删除目录:使用
shutil.rmtree(path)
可以删除目录及其所有子目录和文件 。 -
创建压缩文件:使用
shutil.make_archive(base_name, format, root_dir=None, base_dir=None)
可以创建一个压缩文件。base_name
是压缩文件的基本名称,format
是压缩格式,如 'zip' 或 'tar' 。 -
解压缩文件:使用
shutil.unpack_archive(filename, extract_dir=None, format=None)
可以解压压缩文件到指定目录 。 -
查询磁盘使用情况:使用
shutil.disk_usage(path)
可以获取指定路径的磁盘使用情况,包括总容量、已使用和剩余容量 。 -
复制文件并保留元数据:使用
shutil.copy2(src, dst)
与shutil.copy()
类似,但会尝试保留文件的元数据,如最后访问时间和最后修改时间 。 -
自定义复制:
shutil.copy()
和shutil.copy2()
允许你复制文件,其中shutil.copy2()
会复制更多的元数据 。这些方法大大简化了 Python 中对文件和目录的处理,特别是在需要进行大量文件操作的任务中,如备份或系统部署 -
复制单个文件:
import shutil shutil.copy('source_file.txt', 'destination_file.txt')
复制文件并保留元数据:
shutil.copy2('source_file.txt', 'destination_file.txt')
复制整个目录:
shutil.copytree('source_directory', 'destination_directory')
移动文件或目录:
shutil.move('source_file_or_directory', 'destination_path')
删除单个文件:
shutil.remove('file_to_remove.txt')
删除整个目录树:
shutil.rmtree('directory_to_remove')
创建压缩文件:
shutil.make_archive('archive_name', 'zip', 'directory_to_compress')
解压压缩文件:
shutil.unpack_archive('archive_file.zip', 'destination_directory')
查询磁盘使用情况:
disk_usage = shutil.disk_usage('/') print(f"Total: {disk_usage.total}, Used: {disk_usage.used}, Free: {disk_usage.free}")
使用
ignore_patterns
忽略特定文件或目录:def ignore_patterns(*patterns): return shutil.ignore_patterns(*patterns) shutil.copytree('source_directory', 'destination_directory', ignore=ignore_patterns('*.tmp', 'temp_dir'))
查找可执行文件:
exe_path = shutil.which('python') if exe_path: print(f"Executable found at: {exe_path}") else: print("Executable not found.")
注册和使用自定义归档格式:
def my_archive_format(name, base_dir, verbose=False): # Custom archive function pass shutil.register_archive_format('my_format', my_archive_format, description='My custom archive format') shutil.make_archive('archive_name', 'my_format', 'directory_to_compress')