try:
paper_title = pdf_reader.getDocumentInfo().title
pdf_file.close()
paper_title = str(paper_title).replace(':', ' ')
paper_title = paper_title.replace('/', ' ')
paper_title = paper_title.replace('\\', ' ')
paper_title = paper_title.replace('*', ' ')
paper_title = paper_title.replace('?', ' ')
paper_title = paper_title.replace('"', ' ')
paper_title = paper_title.replace("'", ' ')
paper_title = paper_title.replace('<', ' ')
paper_title = paper_title.replace('>', ' ')
paper_title = paper_title.replace('|', ' ')
new_name = paper_title + '.pdf'
os.rename(path + '/' + temp, path + '/' + str(i) + '_' + new_name)
except PyPDF2.utils.PdfReadError:
except AttributeError:
i = i + 1
for
循环下读取每个pdf文件。- 这里用到了
try except
,为了避免因为单个pdf格式引起的error
中断整个程序的运行,换句话说,这个python程序先把能改的都改了,不能改的就跳过,之后手动处理。 pdf_reader.getDocumentInfo().title
获取论文标题。- 用
close
把pdf对象关掉,不然后面在打开状态无法改名。 - 下面的
replace
为了防止文件命名出现非法符号。 - 最后利用
os.rename
改名文件,大功告成!
修改前:
修改后:
import os
import PyPDF2
from PyPDF2 import PdfFileReader
path = './pdfs'.replace('\\', '/')
paper_name = os.listdir(path)
i = 1
for temp in paper_name:
print(temp)
pdf_file = open(path + '/' + temp, 'rb')
pdf_reader = PdfFileReader(pdf_file)
try:
paper_title = pdf_reader.getDocumentInfo().title
i = int(i)
pdf_file.close()
paper_title = str(paper_title).replace(':', ' ')
paper_title = paper_title.replace('/', ' ')
paper_title = paper_title.replace('\\', ' ')
paper_title = paper_title.replace('*', ' ')
paper_title = paper_title.replace('?', ' ')
paper_title = paper_title.replace('"', ' ')
paper_title = paper_title.replace("'", ' ')
paper_title = paper_title.replace('<', ' ')
paper_title = paper_title.replace('>', ' ')
paper_title = paper_title.replace('|', ' ')
new_name = paper_title + '.pdf'
os.rename(path + '/' + temp, path + '/' + str(i) + '_' + new_name)
except PyPDF2.utils.PdfReadError:
except AttributeError:
i = i + 1
利用Python的PyPDF2库,根据论文标题批量修改pdf的文件名背景PyPDF2任务背景任务pip安装PyPDF2引入函数库利用os读取路径下的论文pdf文件用PyPDF2读取路径下的每个pdf文件获取标题以及更改文件名结果完整流程背景楼主学生,遇到了收集大量论文和pdf文件名乱码需要修改的问题,在网上博客查找资料来解决问题,在本帖中进行经验总结。PyPDF2工作中可能会涉及处理pdf文件,PyPDF2就是这样一个库, 使用它可以轻松的处理pdf文件,它提供了读、写、分割、合并、文件转换
如果想要使用 Python 批量修改文件名,你可以使用 Python 的 `os` 模块中的 `rename()` 函数。
这里是一个简单的例子,假设你想把当前目录下所有后缀为 `.txt` 的文件名修改为 `.bak`:
```python
import os
for filename in os.listdir():
if filename.endswith('.txt'):
os.rename(filename, filename[:-4] + '.bak')
这段代码会循环遍历当前目录下的所有文件,如果文件名以 `.txt` 结尾,就使用 `rename()` 函数将其修改为 `.bak`。
注意,如果你希望修改的文件在不同的目录中,你需要指定文件的完整路径。
```python
import os
path = '/path/to/files'
for filename in os.listdir(path):
if filename.endswith('.txt'):
os.rename(os.path.join(path, filename), os.path.join(path, filename[:-4] + '.bak'))
希望这些信息能帮到你!