• 零代码编程:下载的PDF文件自动批量重命名


    从arxiv或者一些其他网站下载的PDF文件,标题只是创建时间,看不出里面内容是什么,要一个个打开看非常麻烦。

    可以在GPT4中输入提示词:

    你是一个Python编程专家,要完成一个编写关于重命名PDF文件的Python脚本的任务,具体步骤如下:

    打开文件夹:D:\chatgpt图书\arvix论文;

    读取这个文件夹中所有的PDF文件;

    用PyPDF2库提取PDF文件的属性信息:标题;

    用读取出来的PDF文件的标题属性信息重命名PDF文件;

    注意:

    标题属性信息中如果有不符合window文件系统命名规范的特殊符号,要去掉;

    每一步都要输出相关信息到屏幕;

    PyPDF2版本是3.0.0以上,该版本对API进行了重大更改,PdfFileReader已被PdfReader取代,并且utils模块也有所变动,PdfReader对象访问文档属性应当通过访问metadata属性来获取PDF的元数据

    运行程序,失败,错误信息如下:

    Traceback (most recent call last):

    File "d:\Python\pdfautorenam.py", line 16, in

    title = reader.document_info.title

    AttributeError: 'PdfReader' object has no attribute 'document_info'

    把错误信息丢给GPT4,给出的回复是:

    从 PyPDF2 的 3.0.0 版本开始,PdfReader对象访问文档属性的方式发生了变化。相比于早期版本中使用的document_info,在 3.0.0 及之后的版本中,应当通过访问metadata属性来获取PDF的元数据。

    以下是根据您的需求和 PyPDF2 3.0.0 版本以上的API更改,更新后的脚本。它遍历指定文件夹中的PDF文件,从每个PDF文件读取标题,并以该标题重新命名文件

    python源代码:

    import os

    import re

    from PyPDF2 import PdfReader

    # 指定文件夹路径

    folder_path = "D:\\chatgpt图书\\arvix论文"

    # 检索文件夹中的所有文件

    for filename in os.listdir(folder_path):

    if filename.endswith(".pdf"):

    # 拼接完整的文件路径

    pdf_path = os.path.join(folder_path, filename)

    try:

    # 打开每个PDF文件并读取它的属性

    reader = PdfReader(pdf_path)

    # 从metadata中提取PDF文件的标题

    title = reader.metadata.get('/Title', None)

    # 如果标题为空或未获取到标题,保持文件名不变

    if not title:

    print(f"'{filename}' 没有标题属性,因此不会被重命名。")

    continue

    # 删除在Windows系统中无法作为文件名的字符

    invalid_chars = r"\/:*?\"<>|"

    title = re.sub(f"[{invalid_chars}]", "", title)

    # 重命名文件

    new_filename = f"{title}.pdf"

    new_pdf_path = os.path.join(folder_path, new_filename)

    os.rename(pdf_path, new_pdf_path)

    print(f"'{filename}' 已被重命名为 '{new_filename}'。")

    except Exception as e:

    print(f"无法处理 '{filename}'。原因:{e}")

    再次运行程序,成功。

  • 相关阅读:
    RobotFramework用户关键字(一)
    Gbase8s数据库ALTER PROCEDURE 语句
    护眼灯作用大吗?五款没有危害的护眼台灯推荐
    GEE错误——Line 2: ee.Image(...).filterBounds is not a function
    JavaSE高级
    关于Ubuntu18.04安装后没有gcc、make、网卡驱动的问题总结以及解决办法
    JavaScript实现排序算法
    SaaSBase:什么是外勤365AirPalm?
    c# 4.8 实现Windows 定时任务计划(Task Scheduler)
    Java-异常处理
  • 原文地址:https://blog.csdn.net/AIGCTribe/article/details/138167552