You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将多个PDF文件批量重命名为其内置文档标题

Python 3.10 环境下PDF批量按标题重命名实现方案

前置依赖安装

运行代码前先执行以下命令安装适配Python 3.10的依赖库:

pip install pypdf2 python-slugify

可直接运行的完整代码

import os
from PyPDF2 import PdfReader
from slugify import slugify

# ************ 修改为你存放PDF文件的实际文件夹路径 ************
PDF_FOLDER = "./pdf_files"

def get_valid_filename(title, exists_files):
    # 处理标题生成合法文件名
    # 如需保留中文标题,可替换为下一行代码:
    # base_name = "".join([c for c in title if c not in r'\/:*?"<>|']).strip()
    base_name = slugify(title)
    final_name = f"{base_name}.pdf"
    count = 1
    # 处理重名问题
    while final_name in exists_files:
        final_name = f"{base_name}_{count}.pdf"
        count += 1
    return final_name

if __name__ == "__main__":
    # 提前读取所有现有文件名避免重名
    exist_pdfs = [f for f in os.listdir(PDF_FOLDER) if f.lower().endswith(".pdf")]
    processed_count = 0

    for filename in exist_pdfs:
        file_path = os.path.join(PDF_FOLDER, filename)
        try:
            # 读取PDF元数据
            reader = PdfReader(file_path)
            pdf_title = reader.metadata.title
            # 跳过无标题的PDF
            if not pdf_title or str(pdf_title).strip() == "":
                print(f"跳过无标题文件:{filename}")
                continue
            # 生成合法新文件名
            new_filename = get_valid_filename(pdf_title.strip(), exist_pdfs)
            new_file_path = os.path.join(PDF_FOLDER, new_filename)
            # 执行重命名
            os.rename(file_path, new_file_path)
            # 更新现有文件名列表
            exist_pdfs.remove(filename)
            exist_pdfs.append(new_filename)
            processed_count += 1
            print(f"重命名成功:{filename} -> {new_filename}")
        except Exception as e:
            print(f"处理文件失败 {filename},错误原因:{str(e)}")
            continue
    
    print(f"全部处理完成,共成功重命名 {processed_count} 个文件")

代码使用说明

  • 运行前先将代码中PDF_FOLDER变量的值修改为你存放600份PDF的本地文件夹路径
  • 默认生成的文件名会自动过滤所有特殊字符,如需保留中文标题,按照代码中注释替换base_name的生成逻辑即可
  • 代码会自动跳过损坏的PDF、无标题元数据的PDF,不会无理由修改原文件
  • 遇到相同标题的PDF会自动添加_1、_2后缀,不会出现文件覆盖问题

注意事项

  • 运行代码前请先备份所有PDF文件,避免误操作导致文件丢失
  • 扫描版PDF、加密PDF一般没有内置标题元数据,这类文件会保持原文件名
  • 如需自定义命名规则,可在生成new_filename的位置添加前缀、日期等自定义字段

内容的提问来源于stack exchange,提问作者Kunwar Utkarsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:03