利用Python的PyPDF2库,根据论文标题批量修改pdf的文件名

    • PyPDF2
    • 任务背景
  • 任务
    • pip安装PyPDF2
      • 引入函数库
      • 利用os读取路径下的论文pdf文件
      • 用PyPDF2读取路径下的每个pdf文件
      • 获取标题以及更改文件名
    • 结果
    • 完整流程

PyPDF2

  • 工作中可能会涉及处理pdf文件,PyPDF2就是这样一个库, 使用它可以轻松的处理pdf文件,它提供了读、写、分割、合并、文件转换等多种操作。
  • 官方地址,了解更多。

任务背景

  • 从DBLP数据库或者其他网站下载数篇论文,将论文集放在一个文件夹里。
  • 论文的pdf文件名可能为乱码,我们将利用PyPDF2,读取和输出论文pdf的标题,最后将每篇论文的文件名改为论文的标题。
  • 需要注意的是,PyPDF2的使用有局限性,PDF的格式或者编码可能使我们使用中出现PyPDF2.utils.PdfReadError或者AttributeError等等错误,导致我们的论文集无法全部修改;使用的过程中也可能出现读取标题为None的情况。所以不能保证所有论文都能够正确修改,但在我的使用过程中,能把大部分论文都修改了,剩下一小部分手改就好。

任务

pip安装PyPDF2

pip install pypdf2

引入函数库

import os
import PyPDF2
from PyPDF2 import PdfFileReader

利用os读取路径下的论文pdf文件

path = './pdfs'.replace('\\', '/')
paper_name = os.listdir(path)
print(paper_name)i = 0
  • 输出:
 ['5328-Article Text-8553-1-10-20200508.pdf', '5329-Article Text-8554-1-10-20200508.pdf', '5330-Article Text-8555-1-10-20200508.pdf', '5331-Article Text-8556-1-10-20200508.pdf', '5332-Article Text-8557-1-10-20200508.pdf', '5334-Article Text-8559-1-10-20200508.pdf']

注意,这里定义了一个 i = 1,之后会添加到文件名中,为了防止更改文件名后出现重复现象。

用PyPDF2读取路径下的每个pdf文件

for temp in paper_name:print(temp)pdf_file = open(path + '/' + temp, 'rb')pdf_reader = PdfFileReader(pdf_file)  # 打开并建立一个PDF文件对象

获取标题以及更改文件名

 try:paper_title = pdf_reader.getDocumentInfo().title  # 获取PDF标题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:passexcept AttributeError:passi = 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 PdfFileReaderpath = './pdfs'.replace('\\', '/')
paper_name = os.listdir(path)
i = 1for temp in paper_name:print(temp)pdf_file = open(path + '/' + temp, 'rb')pdf_reader = PdfFileReader(pdf_file)  # 打开并建立一个PDF文件对象try:paper_title = pdf_reader.getDocumentInfo().title  # 获取PDF标题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:passexcept AttributeError:passi = i + 1

利用Python的PyPDF2库,根据论文标题批量修改pdf的文件名相关推荐

  1. 利用Python的turtle库绘制四叶草

    利用Python的turtle库绘制四叶草 turtle库的基本使用 turtle库属于Python的标准库,即可以直接用import导入,无需额外安装下载. 这个博主写的蛮好的,我就不献丑了嘿嘿嘿( ...

  2. 用python画玫瑰花教程-利用Python的turtle库绘制玫瑰教程

    用Python的turtle库绘图是很简单的,闲来无事就画了一个玫瑰花,下面奉上源码.... 源码: ''' Created on Nov 18, 2017 @author: QiZhao ''' i ...

  3. 利用Python获取最新的sci论文摘要信息并群发邮箱

    本博客结构 利用Python获取最新的sci论文摘要信息并群发邮箱 1. 需要的包:biopython.markdown 2. 正式代码 利用Python获取最新的sci论文摘要信息并群发邮箱 1. ...

  4. 利用Python的turtle库画自行车

    利用Python的turtle库画自行车 前言 前言总得说点什么.疫情在家,慕课上学习北理工嵩天等老师的<python语言程序设计>[1],觉得turtle画图,挺有意思,既然骑不了自行车 ...

  5. 利用python进行数据分析第二版pdf百度云_参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码...

    第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas.NumPy.IPython和Jupyter,并增加大量实际案例,可以帮助高效解决一系列数据分析问题. 第2版中的主要更新了Py ...

  6. python修改文件linux编码格式,使用python的chardet库获得文件编码并修改编码

    使用python的chardet库获得文件编码并修改编码 windows和linux采用了不同的编码,这让很多人伤透了脑经,这里我采用了Python的chardet库获得代码的编码,然后修改编码 首先 ...

  7. 手把手教你python自动化办公(三)---PPT批量修改

    手把手教你python自动化办公(三)---PPT批量修改 PPT批量修改 场景模拟:当公司让你制作10000个不同数据但背景相同的PPT时,你是干上三天,还是小手一挥,十秒搞定? 1.设计你想要的P ...

  8. 下面哪个python库不能用于提取网页信息_利用python的webscraping库采集抓取爱帮网电话号码...

    利用python的webscraping模块抓取爱帮网电话号码,本文采集该页面的标题和2个电话号码, 具体的python代码: # -*- coding: UTF-8 -*- ''' Created ...

  9. python连接opencv库_利用Python和OpenCV库将URL转换为OpenCV格式的方法

    今天的博客是直接来源于我自己的个人工具函数库. 过去几个月,有些PyImageSearch读者电邮问我:"如何获取URL指向的图片并将其转换成OpenCV格式(不用将其写入磁盘再读回)&qu ...

  10. 利用python的turtle库绘制玫瑰的步骤_用python turtle画玫瑰

    1.turtle 库 2.画玫瑰的代码: import turtle turtle.penup() turtle.left() turtle.fd() turtle.pendown() turtle. ...

最新文章

  1. spring boot +QQmail
  2. elasticSearch 内置功能列表
  3. Hello CNBLOGS
  4. 在周末程序员可以做些什么?
  5. 【Android】Mac Android adb 配置
  6. djang-模型层(model)--添加,查询,修改
  7. node+Mysql,数据库时区显示正确,查询时却显示另一个时区
  8. linux递归创建文件夹_Python中并发请求创建文件夹带来的线程安全问题
  9. svn commit --cl app 时手动输入提交的注释,而不是在 -m 'comments here'这里输入
  10. 网络架构优化--云企业网典型场景分析for客户
  11. 如何通过数据分析鉴别假微博大V?
  12. Bootstrap插件之 下拉菜单 源码分析~~
  13. OpenInfra基金会成立多元化董事会领袖组,任命总干事助推OpenInfra下一个十年的发展...
  14. python + selenium 自动化测试框架
  15. ITSM体系的整体目的
  16. java任务队列_java 任务队列
  17. javaCSGO赛事管理系统springbootvueweb
  18. Automatic Inference of Search Patterns for Taint-Style Vulnerabilities
  19. 远程桌面连接无法显示本地磁盘终极解决
  20. android魅族升级,Android8.0快来了,魅族手机终于要升级 7.0了!

热门文章

  1. 数字基带通信系统的实现流程
  2. 【源码】深入 Java 集合系列之 ArrayList 源码解读
  3. 推荐几款好用的文本编辑器
  4. Linux下载 安装cadenceIC617
  5. 设计模式:卑微的代理模式
  6. IPOP-CMA-ES:一种重启CMA-ES
  7. 查看计算机屏幕颜色软件是什么,显示器颜色校正软件,详细教您显示器颜色校正软件...
  8. MacBook Pro下载工具
  9. 总结:计算机组成与设计(硬件/软件接口)-第四章 处理器
  10. 第九章 JSP标签——《跟我学Shiro》[张开涛]