智用指南
霓虹主题四 · 更硬核的阅读氛围

Python文件操作库:轻松搞定日常文件处理

发布时间:2025-12-30 02:00:29 阅读:74 次

每天整理电脑里的文档、照片或下载内容时,你是不是还在手动复制粘贴?其实用 Python文件操作,几行代码就能自动完成。比如你想把“下载”文件夹里所有的 PDF 文件移到“文档”目录下,完全不需要一个个拖动。

os 和 shutil:基础但实用

Python 自带的 osshutil 模块是处理文件的常用组合。os 能查看路径、列出文件,shutil 则擅长复制、移动和删除。

import os
import shutil

source_dir = "/Users/name/Downloads"
dest_dir = "/Users/name/Documents/PDFs"

for filename in os.listdir(source_dir):
    if filename.endswith(".pdf"):
        src_path = os.path.join(source_dir, filename)
        dest_path = os.path.join(dest_dir, filename)
        shutil.move(src_path, dest_path)

这段代码会扫描 Downloads 目录,找到所有以 .pdf 结尾的文件,然后移动到目标文件夹。换种后缀,比如 .jpg 或 .docx,就能处理照片或 Word 文档。

pathlib:更现代的写法

从 Python 3.4 开始,pathlib 成了推荐的路径操作方式。它把路径当作对象来处理,读起来更直观。

from pathlib import Path

source = Path("/Users/name/Downloads")
dest = Path("/Users/name/Documents/Photos")

dest.mkdir(exist_ok=True)  # 如果目录不存在就创建

for file in source.glob("*.jpg"):
    if file.is_file():
        shutil.copy(file, dest / file.name)

这里用 Path 创建路径对象,glob 方法查找特定格式的文件,整个过程像在读一句话,逻辑清晰。

实际场景:自动归档工作周报

假设每周五你都要把当周写的周报文件从“待归档”移到“已归档/2025-W12”这样的目录里。可以用时间模块配合 pathlib 自动生成文件夹名称。

from datetime import datetime

now = datetime.now()
week_num = now.strftime("%Y-W%U")
archive_folder = Path("已归档") / week_num
archive_folder.mkdir(exist_ok=True, parents=True)

for report in Path("待归档").glob("*周报*.docx"):
    shutil.move(report, archive_folder / report.name)

每到周五运行一下脚本,所有带“周报”字样的文档自动归类,再也不怕遗漏。

小技巧:避免重复操作

有时候脚本不小心多跑了一次,文件已经被移走了,再执行会出错。可以在操作前加个判断:

if dest.exists():
    print(f"{dest} 已存在,跳过 {file.name}")
else:
    shutil.copy(file, dest)

这样即使重复运行,也不会报错或覆盖文件。

这些文件操作库不只适合整理个人文件,写个小脚本批量重命名发票、合并日志、清理缓存都很方便。关键是不用每次都点开文件夹慢慢找,省下来的时间喝杯咖啡更实在。