从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 <module> 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}") 再次运行程序,成功。 |
|