Python 库手册:shutil 文件和文件夹高级操作模块

shutil 是 Python 的标准库之一,专门用于执行高级的文件和文件夹操作,如复制、移动、删除、打包压缩等。它在处理实际文件系统任务(尤其涉及大文件或整个目录)时非常有用,是 os 模块的功能补充。

常见应用场景:

(1)拷贝文件或整个目录(保留/不保留元数据)。

(2)移动文件或目录。

(3)删除整个目录树。

(4)创建压缩归档(zip、tar、gztar 等)。

(5)查询磁盘使用情况。

(6)文件对象复制(适用于类文件对象)。

  ◆  ◆

核心概念

1、shutil 是 shell utilities 的缩写,意为“命令行工具集合”。

2、与 os.rename()、os.remove() 等函数不同,shutil 适用于更复杂的操作,如递归复制整个目录、跨设备移动文件。

3、复制文件时,可选择是否保留元数据(如创建时间、权限)。

4、支持打包归档功能:可将目录打包为 .zip、.tar.gz 等。

5、所有操作均在操作系统层面执行,真实修改磁盘内容。

  ◆  ◆

应用举例

例 1:复制文件(保留元数据)

import shutil
shutil.copy2("mediaTEAdir.txt", "backup.txt")  # 复制文件及其元数据(如修改时间)

例 2:复制整个目录

import shutil
shutil.copytree("test", "data_backup")  # 递归复制整个目录

例 3:移动文件或目录

import shutil
shutil.move("test/t1/mediaTEA.txt", "test/t2/")  # 将文件移动到新目录

例 4:删除整个目录树

import shutil
shutil.rmtree("test/t2")  # 删除整个 t2 文件夹及其内容

例 5:创建 zip 格式压缩包

import shutil
shutil.make_archive("mediaTEA", "zip", "test")  # 将目录 test 压缩为 mediaTEA.zip

  ◆  ◆

常用函数速览

shutil.copy(src, dst)

复制文件,不保留原文件元数据(如权限、时间戳)。

参数:src 源文件路径,dst 目标路径

返回:目标文件的路径字符串

shutil.copy2(src, dst)

复制文件,并保留文件的元数据(推荐用于备份)。

参数:同上

返回:目标文件的路径字符串

shutil.copyfile(src, dst)

仅复制文件内容,不复制权限或元数据,不支持目录路径。

参数:同上

返回:目标文件路径

shutil.copyfileobj(fsrc, fdst[, length])

从一个类文件对象复制内容到另一个。

参数:fsrc 和 fdst 为文件对象,length 为每次读取的字节数(可选)

返回:None

shutil.copytree(src, dst, dirs_exist_ok=False)

递归复制整个目录树。

参数:

src:源目录路径

dst:目标目录路径

dirs_exist_ok:为 True 时,允许目标目录已存在(Python 3.8+)

返回:目标目录路径

shutil.disk_usage(path)

返回指定路径所在磁盘的总容量、已用空间和可用空间(以字节为单位)。

参数:path 字符串

返回:命名元组 (total, used, free)

shutil.get_archive_formats()

列出可用的归档格式(用于 make_archive())。

返回:格式名与描述组成的列表

shutil.make_archive(base_name, format, root_dir=None)

将目录打包成压缩文件(支持 zip、tar、gztar 等格式)。

参数:

base_name:压缩包路径(不含扩展名)

format:'zip', 'tar', 'gztar', 'bztar' 等

root_dir:要压缩的目录(默认为当前目录)

返回:压缩文件路径

shutil.move(src, dst)

移动文件或目录。若跨磁盘分区,将自动复制再删除原始文件。

参数:src 和 dst 为路径字符串

返回:目标路径字符串

shutil.rmtree(path, ignore_errors=False)

递归删除目录树。

参数:

path:目录路径

ignore_errors:为 True 时忽略删除错误

返回:None

  ◆  ◆

补充说明

1、copy2() 是文件复制中最通用、最安全的选择。

2、copytree() 是备份整个目录的首选。

3、make_archive() 可快速将项目或文件夹压缩保存。

4、对于临时清理、测试项目,rmtree() 可以彻底删除文件夹内容,但需谨慎使用。

图片

“点赞有美意,赞赏是鼓励”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值