Python 标准库模块shutil

shutil(Shell Utilities)是 Python 标准库中用于高级文件操作的模块,提供了比 os模块更便捷的文件/目录复制、移动、删除、归档等功能。下面详细介绍其核心功能、参数说明及示例代码。


1. 文件复制

​**​(1) shutil.copy(src, dst)**​

作用​:复制文件到目标路径(保留文件权限,但不保留元数据如修改时间)。

参数​:

  • src:源文件路径(必须是文件,不能是目录)。
  • dst:目标路径(可以是文件名或目录)。

示例​:

python 复制代码
import shutil

# 复制文件到目标目录(保留文件名)
shutil.copy("source.txt", "backup/")  # 目标路径是目录,自动保留原文件名

# 复制文件并重命名
shutil.copy("source.txt", "backup/copied_file.txt")  # 指定新文件名

​**​(2) shutil.copy2(src, dst)**​

作用​:复制文件并保留所有元数据(如修改时间、创建时间等)。

参数 ​:同 shutil.copy()

示例​:

python 复制代码
shutil.copy2("source.txt", "backup/")  # 保留元数据

​**​(3) shutil.copyfile(src, dst)**​

作用​:仅复制文件内容(不复制权限、元数据)。

参数​:

  • src:源文件路径。
  • dst:目标文件路径(必须是文件名,不能是目录)。

示例​:

python 复制代码
shutil.copyfile("source.txt", "backup/copied_content.txt")  # 仅复制内容

2. 目录操作

​**​(1) shutil.copytree(src, dst)**​

作用​:递归复制整个目录树(包括子目录和文件)。

参数​:

  • src:源目录路径。
  • dst:目标目录路径(必须不存在,否则报错 FileExistsError)。

示例​:

python 复制代码
# 复制整个目录
shutil.copytree("my_folder", "backup_folder")  # 目标目录必须不存在

​**​(2) shutil.rmtree(path)**​

作用 ​:递归删除目录及其所有内容(类似 rm -rf)。

参数​:

  • path:要删除的目录路径。

示例​:

python 复制代码
shutil.rmtree("temp_folder")  # 慎用!不可恢复

3. 文件移动

​**shutil.move(src, dst)**​

作用​:移动文件或目录(类似剪切操作)。

参数​:

  • src:源路径(文件或目录)。
  • dst:目标路径(可以是目录或新文件名)。

示例​:

python 复制代码
# 移动文件
shutil.move("old_location/file.txt", "new_location/")  # 移动到目录
shutil.move("file.txt", "renamed_file.txt")  # 移动并重命名

# 移动目录
shutil.move("old_dir", "new_dir")  # 目录移动

4. 归档与压缩

​**​(1) shutil.make_archive(base_name, format, root_dir)**​

作用 ​:创建压缩包(支持 ziptargztar等格式)。

参数​:

  • base_name:压缩包名称(不带扩展名)。
  • format:压缩格式("zip""tar""gztar"等)。
  • root_dir:要压缩的目录路径。

示例​:

python 复制代码
# 创建 ZIP 压缩包
shutil.make_archive("backup", "zip", "my_folder")  # 生成 backup.zip

# 创建 TAR.GZ 压缩包
shutil.make_archive("backup", "gztar", "my_folder")  # 生成 backup.tar.gz

​**​(2) shutil.unpack_archive(filename, extract_dir)**​

作用 ​:解压归档文件(支持 ziptargztar等)。

参数​:

  • filename:压缩包路径。
  • extract_dir:解压目标目录(可选,默认当前目录)。

示例​:

python 复制代码
# 解压 ZIP 文件
shutil.unpack_archive("backup.zip", "extracted_files/")

5. 磁盘空间查询

​**shutil.disk_usage(path)**​

作用​:返回磁盘使用情况(总空间、已用空间、剩余空间)。

参数​:

  • path:要查询的路径(如 "/""C:")。

返回值 ​:namedtuple包含 totalusedfree(单位:字节)。

示例​:

python 复制代码
usage = shutil.disk_usage("/")
print(f"总空间: {usage.total / (1024**3):.2f} GB")
print(f"已用空间: {usage.used / (1024**3):.2f} GB")
print(f"剩余空间: {usage.free / (1024**3):.2f} GB")

总结

方法 作用 关键参数
copy(src, dst) 复制文件(保留权限) src, dst
copy2(src, dst) 复制文件(保留元数据) src, dst
copyfile(src, dst) 仅复制内容 src, dst
copytree(src, dst) 递归复制目录 src, dst
rmtree(path) 递归删除目录 path
move(src, dst) 移动文件/目录 src, dst
make_archive() 创建压缩包 base_name, format, root_dir
unpack_archive() 解压文件 filename, extract_dir
disk_usage() 查询磁盘空间 path

shutil适合处理高级文件操作,而底层控制(如文件句柄)仍需结合 ospathlib

相关推荐
lew-yu1 分钟前
【已解决】Linux中程序脚本可以手动执行成功,但加在rc.local中不能开机自启
linux·服务器
ajassi20003 分钟前
linux C 语言开发 (四) linux系统常用命令
linux·运维·服务器
小嵌同学6 分钟前
Linux:malloc背后的实现细节
大数据·linux·数据库
小马哥编程18 分钟前
如何在路由器上配置DHCP服务器?
服务器·网络·智能路由器
EveryPossible24 分钟前
如何终止画图
linux·编辑器·vim
大嘴带你水论文25 分钟前
震惊!仅用10张照片就能随意编辑3D人脸?韩国KAIST最新黑科技FFaceNeRF解析!
论文阅读·人工智能·python·科技·计算机视觉·3d·transformer
CodeCraft Studio32 分钟前
国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
java·python·pdf·spire.pdf·java创建pdf·从html创建pdf
荣光波比36 分钟前
Shell 秘典(卷十)—— 服务器资源自动化监控脚本的设计与实现
运维·服务器·自动化·云计算
摆烂z1 小时前
Jupyter Notebook的交互式开发环境方便py开发
ide·python·jupyter
wangjialelele1 小时前
Linux匿名管道和命名管道以及共享内存
linux·运维·网络