使用Python来提取目录中所有pdf文档中的页数

时间:2017-03-17 14:05:03

标签: python pdf

我正在尝试使用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.

2 个答案:

答案 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)