当前位置: 首页 > news >正文

Python 标准库模块shutil

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


1. 文件复制

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

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

参数​:

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

示例​:

import shutil# 复制文件到目标目录(保留文件名)
shutil.copy("source.txt", "backup/")  # 目标路径是目录,自动保留原文件名# 复制文件并重命名
shutil.copy("source.txt", "backup/copied_file.txt")  # 指定新文件名

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

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

参数​:同 shutil.copy()

示例​:

shutil.copy2("source.txt", "backup/")  # 保留元数据

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

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

参数​:

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

示例​:

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

2. 目录操作

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

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

参数​:

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

示例​:

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

​(2) shutil.rmtree(path)

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

参数​:

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

示例​:

shutil.rmtree("temp_folder")  # 慎用!不可恢复

3. 文件移动

shutil.move(src, dst)

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

参数​:

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

示例​:

# 移动文件
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:要压缩的目录路径。

示例​:

# 创建 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:解压目标目录(可选,默认当前目录)。

示例​:

# 解压 ZIP 文件
shutil.unpack_archive("backup.zip", "extracted_files/")

5. 磁盘空间查询

shutil.disk_usage(path)

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

参数​:

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

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

示例​:

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)

复制文件(保留权限)

srcdst

copy2(src, dst)

复制文件(保留元数据)

srcdst

copyfile(src, dst)

仅复制内容

srcdst

copytree(src, dst)

递归复制目录

srcdst

rmtree(path)

递归删除目录

path

move(src, dst)

移动文件/目录

srcdst

make_archive()

创建压缩包

base_nameformatroot_dir

unpack_archive()

解压文件

filenameextract_dir

disk_usage()

查询磁盘空间

path

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

http://www.xdnf.cn/news/1286479.html

相关文章:

  • 升级 Docker,避免执行 docker compose 时报错
  • Java 大视界 -- Java 大数据在智能教育学习效果评估指标体系构建与精准评估中的应用(394)
  • 实现一个二维码让 iOS 和 Android 用户自动跳转到对应下载链接
  • MySQL——MySQL引擎层BufferPool工作过程原理
  • 3 Abp 核心框架(Core Framework)
  • 京东方 DV133FHM-NN1 FHD13.3寸 工业液晶模组技术档案
  • 在Colab上复现LoRA相关论文实验的完整指南
  • 跨设备开发不再难:HarmonyOS 分布式任务管理应用全解析
  • 人机交互:连接人类与数字世界的桥梁
  • 基于柔性管控终端的新能源汽车充电站有序充电系统设计与实现
  • Docker容器部署论坛和网上商城(小白的“升级打怪”成长之路)
  • 1 JQ6500语音播报模块详解(STM32)
  • 电机极数2极、4极、6极、8极的区别
  • 电子电路原理学习笔记---第5章特殊用途二极管---第2天
  • PaddlePaddle 模型训练技巧
  • Myqsl建立库表练习
  • Spark on K8s 在vivo大数据平台的混部实战
  • Go 语言 里 `var`、`make`、`new`、`:=` 的区别
  • 深入解析ArrayList与LinkedList的区别:如何正确选择?
  • 游戏中角色持枪:玩家操控角色,角色转向时枪也要转向
  • Java集合学习之forEach()遍历方法的底层原理
  • 【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
  • 人工智能+虚拟仿真,助推医学检查技术理论与实践结合
  • Linux环境gitlab多种部署方式及具体使用
  • [论文阅读] (41)JISA24 物联网环境下基于少样本学习的攻击流量分类
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南
  • 使用 NetBird 创建安全的私有网络,简化远程连接!
  • 【论文阅读】从表面肌电信号中提取神经信息用于上肢假肢控制:新兴途径与挑战
  • 终端安全检测和防御技术总结
  • Java数据结构之ArrayList