每天下载的资料、截图、文档堆满桌面,找一个文件得翻半天。与其手动拖来拖去,不如让Python帮你自动分类归档。掌握几个常用的文件操作库,几分钟就能写个脚本把杂乱无章的文件夹变得井井有条。
os 和 os.path:基础但实用
Python 自带的 os 模块能处理路径、列出文件、创建目录,适合做简单的整理任务。比如你想把桌面上所有 PNG 图片移到“截图”文件夹:
import os
source_dir = '/Users/yourname/Desktop'
dest_dir = '/Users/yourname/Desktop/截图'
if not os.path.exists(dest_dir):
os.makedirs(dest_dir)
for filename in os.listdir(source_dir):
if filename.endswith('.png'):
src = os.path.join(source_dir, filename)
dst = os.path.join(dest_dir, filename)
os.rename(src, dst)
pathlib:更现代的写法
从 Python 3.4 开始,pathlib 成了推荐方式。它把路径当对象处理,代码读起来更自然。比如按文件类型建文件夹并移动文件:
from pathlib import Path
desktop = Path('/Users/yourname/Desktop')
types_map = {
'图片': ['.jpg', '.png', '.gif'],
'文档': ['.pdf', '.docx', '.txt'],
'表格': ['.xlsx', '.csv']
}
for file in desktop.iterdir():
if file.is_file():
for folder_name, extensions in types_map.items():
if file.suffix.lower() in extensions:
target_dir = desktop / folder_name
target_dir.mkdir(exist_ok=True)
file.rename(target_dir / file.name)
break
shutil:批量搬文件的好帮手
要复制或移动整个文件夹,shutil 更合适。比如备份整个“项目”目录到另一个位置:
import shutil
src = '/Users/yourname/Documents/项目'
dst = '/Volumes/Backup/项目_副本'
shutil.copytree(src, dst, dirs_exist_ok=True)
还能只搬某个类型的文件,比如把所有 PDF 复制到阅读文件夹:
pdf_folder = Path('/Users/yourname/待阅读')
pdf_folder.mkdir(exist_ok=True)
for pdf in Path('/Users/yourname/Downloads').glob('*.pdf'):
shutil.copy(pdf, pdf_folder / pdf.name)
实战小技巧:按时间整理照片
手机导出的照片命名混乱,可以用修改时间自动分到年月文件夹里:
from datetime import datetime
photo = Path('/Users/yourname/Pictures/IMG_2023.jpg')
mod_time = datetime.fromtimestamp(photo.stat().st_mtime)
year_month = mod_time.strftime('%Y-%m')
target_dir = Path('/Users/yourname/照片归档') / year_month
target_dir.mkdir(parents=True, exist_ok=True)
photo.rename(target_dir / photo.name)
把这些逻辑打包成脚本,加到系统定时任务里,每周自动跑一次,再也不用担心文件越积越多。