我正在阅读pdf文件,并尝试通过NLP技术从其中提取关键字。现在,该程序一次只能接受一个pdf。我在D驱动器中有一个文件夹说“ pdf_docs”。该文件夹包含许多pdf文档。我的目标是从文件夹中逐个读取每个pdf文件。我如何在python中做到这一点。到目前为止,成功运行的代码如下所示。
import PyPDF2
file = open('abc.pdf','rb')
fileReader = PyPDF2.PdfFileReader(file)
count = 0
while count < 3:
pageObj = fileReader.getPage(count)
count +=1
text = pageObj.extractText()
答案 0 :(得分:1)
您可以使用glob以便使用模式匹配来获取目录中所有pdf文件的列表。
import glob
pdf_dir = "/foo/dir"
pdf_files = glob.glob("%s/*.pdf" % pdf_dir)
for file in pdf_files:
do_your_stuff()
答案 1 :(得分:0)
首先读取该目录下所有可用的文件
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
然后为该列表中的每个文件运行代码
import PyPDF2
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for file in onlyfiles:
fileReader = PyPDF2.PdfFileReader(open(file,'rb'))
count = 0
while count < 3:
pageObj = fileReader.getPage(count)
count +=1
text = pageObj.extractText()
os.listdir()将为您提供目录中的所有内容-文件和目录。因此请注意,路径中仅包含pdf文件,否则您将需要对列表进行简单过滤。
您也可以使用glob模块,因为它可以进行模式匹配。
>>> import glob
>>> print(glob.glob('/home/rszamszur/*.sh'))
['/home/rszamszur/work-monitors.sh', '/home/rszamszur/default-monitor.sh', '/home/rszamszur/home-monitors.sh']
OS模块和glob之间的主要区别在于OS可以在所有系统上运行,而glob仅适用于Unix。
答案 2 :(得分:0)
import PyPDF2
import re
import glob
#your full path of directory
mypath = "dir"
for file in glob.glob(mypath + "/*.pdf"):
print(file)
if file.endswith('.pdf'):
fileReader = PyPDF2.PdfFileReader(open(file, "rb"))
count = 0
count = fileReader.numPages
while count >= 0:
count -= 1
pageObj = fileReader.getPage(count)
text = pageObj.extractText()
print(text)
num = re.findall(r'[0-9]+', text)
print(num)
else:
print("not in format")
让我们看一下代码: 在python中,我们无法正常处理Pdf文件。 所以我们需要安装PyPDF2软件包,然后导入该软件包。 “ glob”功能用于读取目录内的文件。 使用“ for”循环获取文件夹中的文件。 现在使用“ if”条件检查文件类型是否为pdf格式。 现在,我们正在使用“ PdfFileReader”功能读取文件夹中的pdf文件。 然后获取pdf文档中的页数。 通过使用while循环来获取所有页面并打印文件中的所有文本。