
你是否曾为整理电脑上乱七八糟的文件头疼?手动复制、移动文件夹,或者打包备份资料,是不是感觉像在做“体力活”?好在我们有Python,可以从这些无聊的事务中轻松解放出来。
而shutil模块可谓是Python标准库里的“文件管理神器”,能让文件操作变得像点外卖一样简单。
今天Crossin就带你快速上手shutil,从此告别繁琐的文件操作!
1. Shutil是个啥?简单又强大!
shutil(意为shell utilities)是Python标准库里的一个模块,专门用来处理文件和文件夹的高级操作。相比底层的os模块,shutil就像一个“傻瓜式”工具箱,代码少、效果好,特别适合不想深究底层细节的程序员。
它能干啥?简单来说,shutil能帮你操作电脑上的文件,比如:
最棒的是,shutil是Python自带的,import一下就能用,无需额外安装!接下来,我们来解锁它的主要功能。
2. Shutil的“五大绝招”
2.1 文件复制:一键搞定
想把文件从A地复制到B地?shutil提供了几个超好用的复制函数:
代码示例:把照片photo.jpg复制到backup文件夹
import shutil
shutil.copy("photo.jpg", "backup/photo.jpg")
# 或者用 copy2 保留更多信息
shutil.copy2("photo.jpg", "backup/photo_copy.jpg")几行代码,照片就安全备份了!如果有一堆文件要处理,显然要比鼠标拖拽快多了。
2.2 目录操作:批量处理省心
处理整个文件夹?shutil也有大招:
代码示例:备份你的Python项目文件夹
import shutil
# 复制整个项目到备份目录
shutil.copytree("my_project", "backup/my_project_backup")
# 如果要删除旧备份(小心!)
shutil.rmtree("backup/old_project")用copytree,整个项目文件夹秒复制,连子文件夹都会完美保留。
2.3 文件移动:拖拽不如代码快
想整理文件,把照片、视频分门别类?shutil.move()是你的好帮手:
代码示例:把下载文件夹里的.jpg文件挪到photos文件夹
import shutil
shutil.move("downloads/vacation.jpg", "photos/vacation.jpg")这个效果和copy类似,区别是会删掉原始文件。
2.4 磁盘空间:心中有数
复制大文件前,担心硬盘空间不够?shutil能帮你查:
代码示例:检查C盘空间够不够存一个10GB的文件
import shutil
total, used, free = shutil.disk_usage("C:/")
if free > 10 * 1024 * 1024 * 1024: # 10GB
print("空间够用,放心复制!")
else:
print("硬盘快满了,清理一下吧!")有了这个,复制大文件就放心多了。
2.5 压缩解压:备份更轻松
想把文件打包成zip,或者解压别人的压缩包?shutil轻松搞定:
代码示例:打包学习资料并解压
import shutil
# 打包 my_project 文件夹为 zip
shutil.make_archive("my_project_backup", "zip", "my_project")
# 解压到指定文件夹
shutil.unpack_archive("my_project_backup.zip", "extracted_project")几行代码,备份和解压so easy!
3. 动手试试:三个实用案例
3.1 案例1:自动备份代码项目
假设你有一个Python项目文件夹my_project,想定期备份并压缩成zip:
import shutil
import datetime
# 备份项目文件夹
today = datetime.date.today()
backup_dir = f"backup/my_project_{today}"
try:
shutil.copytree("my_project", backup_dir)
# 打包成zip
shutil.make_archive(f"backup/project_{today}", "zip", "my_project")
print(f"备份完成!文件保存在 {backup_dir} 和 project_{today}.zip")
except FileExistsError:
print("备份文件夹已存在,换个名字试试!")3.2 案例2:整理下载文件夹
下载文件夹乱糟糟?我们用shutil.move()把.jpg文件挪到photos文件夹:
import shutil
import os
downloads = "downloads"
photos_dir = "photos"
os.makedirs(photos_dir, exist_ok=True) # 确保目标文件夹存在
for file in os.listdir(downloads):
if file.endswith(".jpg"):
shutil.move(os.path.join(downloads, file), os.path.join(photos_dir, file))
print("照片整理完成!")3.3 案例3:清理旧文件,释放空间
硬盘快满了?检查空间并清理旧备份:
import shutil
# 检查磁盘空间
total, used, free = shutil.disk_usage(".")
print(f"剩余空间: {free // (1024**3)} GB")
# 删除旧备份文件夹
try:
shutil.rmtree("backup/old_project")
print("旧备份已删除,空间解放!")
except FileNotFoundError:
print("没找到旧备份,跳过清理!")友情提示:rmtree很危险,删前确认路径正确,避免误删重要文件!
4. shutil常见疑问解答
4.1 问:啥时候用shutil,啥时候用os?
答:用shutil:需要快速复制、移动、删除文件夹,或处理压缩文件时。
用os:需要更细粒度的控制,比如只改文件权限或遍历目录结构。
4.2 问:copy和copy2有啥不一样?
答:copy保留基本元数据(像权限),copy2更强,连文件的创建时间、修改时间都保留。日常用copy2就够了。
4.3 问:大文件夹复制慢怎么办?
答:试试分批复制,或者用rsync(系统命令)提速。shutil适合简单任务,大型任务可以考虑其他工具。
4.4 问:为啥报“权限错误”?
答:可能是目标文件夹无写入权限,或者文件被占用。检查路径,确认文件没被其他程序锁定。
5. 总结
shutil就像Python里的“文件魔法师”,简单几行代码,就能让文件操作变得省心又有趣!从备份项目到整理下载文件夹,它都能帮你省下不少时间。
正因为有了这些非常好用的库,Python才能帮我们轻松搞定各种办公自动化的问题。难怪人们要说:人生苦短,我用Python!
你还有什么想了解的模块,欢迎在评论区留言。
官方文档:Python - shutil模块
https://docs.python.org/zh-cn/3.13/library/shutil.html
如果本文对你有帮助,欢迎点赞、评论、转发。你们的支持是我更新的动力~
感谢转发和点赞的各位~
本文分享自 Crossin的编程教室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!