我正在尝试使用PyPDF2来获取目录中每个pdf的页数。我可以使用.getNumPages()来查找一个pdf文件中的页面数,但我需要遍历一个目录并获取每个文件的页数。有什么想法吗?
这是我到目前为止的代码:
import pandas as pd
import os
from PyPDF2 import PdfFileReader
df = pd.DataFrame(columns=['fileName', 'fileLocation', 'pageNumber'])
pdf=PdfFileReader(open('path/to/file.pdf','rb'))
for root, dirs, files in os.walk(r'Directory path'):
for file in files:
if file.endswith(".pdf"):
df2 = pd.DataFrame([[file, os.path.join(root,file),pdf.getNumPages()]], columns=['fileName', 'fileLocation', 'pageNumber'])
df = df.append(df2, ignore_index=True)
此代码只会将目录中第一个PDF文件的页面数添加到数据框中。如果我尝试向PdfFilereader()添加目录路径,我会得到一个
PermissionError:[Errno 13] Permission denied.
答案 0 :(得分:0)
是的,使用
import glob
list_of_pdf_filenames = glob.glob('*pdf')
返回目录中所有PDF文件名的列表。
**编辑:**
通过将open()语句放在循环中,我能够让这段代码在我的计算机上运行:
import pandas as pd
import os
from PyPDF2 import PdfFileReader
df = pd.DataFrame(columns=['fileName', 'fileLocation', 'pageNumber'])
for root, dirs, files in os.walk(r'/home/benjamin/docs/'):
for f in files:
if f.endswith(".pdf"):
pdf=PdfFileReader(open(os.path.join(root, f),'rb'))
df2 = pd.DataFrame([[f, os.path.join(root,f), pdf.getNumPages()]], columns=['fileName', 'fileLocation', 'pageNumber'])
df = df.append(df2, ignore_index=True)
print(df.head)
答案 1 :(得分:0)
步骤1:-
pip安装pyPDF2
步骤2:-
import requests, PyPDF2, io
url = 'sample.pdf'
response = requests.get(url)
with io.BytesIO(response.content) as open_pdf_file:
read_pdf = PyPDF2.PdfFileReader(open_pdf_file)
num_pages = read_pdf.getNumPages()
print(num_pages)