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

Python shutil模块详解(新手入门到精通的文件与目录操作指南)

在 Python 编程中,处理文件和目录是常见任务。虽然 os 模块提供了基础功能,但 Python shutil模块 提供了更高层次、更便捷的操作接口,特别适合复制、移动、删除整个目录树等复杂操作。本教程将带你从零开始掌握 shutil 的核心功能,即使你是编程小白也能轻松上手!

Python shutil模块详解(新手入门到精通的文件与目录操作指南) shutil模块  文件操作 目录管理 shutil教程 第1张

什么是 shutil 模块?

shutil 是 “shell utilities” 的缩写,它是 Python 标准库的一部分,用于执行高级文件操作,如复制、移动、压缩和删除文件及目录。相比 os 模块,shutil 更加直观、安全且功能强大。

常用功能详解

1. 复制文件:copy() 与 copy2()

shutil.copy(src, dst) 可以将文件从 src 复制到 dst。如果 dst 是目录,则保留原文件名;如果是完整路径,则使用新文件名。

import shutil# 复制文件到目标目录shutil.copy('source.txt', 'backup/')# 复制并重命名shutil.copy('source.txt', 'backup/new_name.txt')

如果你还想保留文件的元数据(如修改时间、权限等),请使用 shutil.copy2()

shutil.copy2('important_file.pdf', 'archive/')

2. 复制整个目录:copytree()

要复制整个文件夹(包括子目录和所有文件),使用 shutil.copytree(src, dst)。注意:目标目录 dst 必须不存在。

import shutil# 将 project/ 整个目录复制为 project_backup/shutil.copytree('project', 'project_backup')

3. 移动文件或目录:move()

shutil.move(src, dst) 可以移动文件或整个目录。如果目标路径已存在同名文件,会被覆盖。

# 移动文件shutil.move('temp/data.csv', 'final/')# 移动并重命名目录shutil.move('old_folder', 'new_location/renamed_folder')

4. 删除整个目录:rmtree()

要彻底删除一个非空目录及其所有内容,请使用 shutil.rmtree(path)。⚠️ 警告:此操作不可逆!

# 删除整个缓存目录shutil.rmtree('cache/')

5. 获取磁盘使用情况:disk_usage()

从 Python 3.3 开始,shutil.disk_usage(path) 可以返回指定路径所在磁盘的总空间、已用空间和剩余空间。

total, used, free = shutil.disk_usage("/")print(f"总空间: {total // (2**30)} GB")print(f"已用: {used // (2**30)} GB")print(f"可用: {free // (2**30)} GB")

实战小例子:自动备份项目文件夹

下面是一个简单的脚本,使用 目录管理 功能自动创建带时间戳的备份:

import shutilimport datetime# 获取当前时间作为备份名timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")src = "my_project"dst = f"backups/my_project_{timestamp}"# 执行备份shutil.copytree(src, dst)print(f"备份成功!保存至: {dst}")

总结

通过本 shutil教程,你已经掌握了 Python 中高效进行 文件操作目录管理 的核心方法。无论是日常脚本编写、自动化运维还是数据处理,shutil 都是你不可或缺的工具。

记住:操作前务必确认路径正确,尤其是删除操作!建议在测试环境中先练习,再用于生产。

现在,就去尝试用 shutil 简化你的文件处理任务吧!