共计 1490 个字符,预计需要花费 4 分钟才能阅读完成。
在日常使用电脑时,我们的文件夹常常堆满了各种文件,图片、文档、视频杂乱无章。Python 可以帮助我们编写一个简单的文件自动整理脚本,将不同类型的文件分类存放到对应的目录中。
- 导入所需模块
我们需要os来获取文件列表,shutil来移动文件。
import os
import shutil
- 定义文件分类规则
通过文件扩展名来判断文件类型。
file_types = {"images": [".jpg", ".png", ".gif", ".jpeg"],
"documents": [".txt", ".pdf", ".docx", ".xlsx"],
"videos": [".mp4", ".avi", ".mov"],
"music": [".mp3", ".wav"],
"others": []}
- 创建目标文件夹
def create_folders(base_path, categories):
for folder in categories:
folder_path = os.path.join(base_path, folder)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
- 判断文件类型
def get_file_category(filename):
_, ext = os.path.splitext(filename)
for category, extensions in file_types.items():
if ext.lower() in extensions:
return category
return "others"
- 整理文件
def organize_files(base_path):
create_folders(base_path, file_types.keys())
for filename in os.listdir(base_path):
file_path = os.path.join(base_path, filename)
if os.path.isfile(file_path):
category = get_file_category(filename)
new_path = os.path.join(base_path, category, filename)
shutil.move(file_path, new_path)
print(f" 已移动 {filename} -> {category}/")
- 运行脚本
if __name__ == "__main__":
base_path = "./downloads" # 假设我们整理 downloads 文件夹
organize_files(base_path)
- 运行结果
假设downloads文件夹下有以下文件:
- photo.jpg
- report.pdf
- video.mp4
- music.mp3
- notes.txt
运行脚本后会生成以下目录结构:
downloads/
├── images/
│ └── photo.jpg
├── documents/
│ ├── report.pdf
│ └── notes.txt
├── videos/
│ └── video.mp4
├── music/
│ └── music.mp3
└── others/
总结:
这个文件自动整理程序实现了基础的分类功能,可以让文件更加整齐。你可以根据自己的需要扩展分类规则,比如将 .zip 文件放到 archives 文件夹,或者将 .py 文件放到 scripts 文件夹。
练习与思考:
- 修改代码,让它支持递归整理子目录中的文件。
- 在分类时检查是否存在重名文件,如果有,自动在文件名后加上数字后缀。
- 将脚本打包成一个可执行文件,在 Windows 或 macOS 上一键运行。
正文完