2017-03-17 77 views
0

我正在嘗試使用PyPDF2來獲取目錄中每個pdf的頁數。我可以使用.getNumPages()來查找一個pdf文件的頁數,但我需要遍歷一個目錄並獲取每個文件的頁數。有任何想法嗎?使用Python拉取目錄中所有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文件到數據幀。如果我嘗試添加到PdfF​​ilereader目錄路徑(),我得到一個

PermissionError:[Errno 13] Permission denied. 
+0

你有沒有嘗試這樣做你自己第一?如果是這樣,你應該發佈你的代碼,然後尋求幫助。 StackOverflow不是讓人們爲你工作的地方! – mrpopo

+0

mrpopo我很欣賞SO的方面,但他只需要兩行代碼,所以也許我們可以例外:) –

+0

我是StackOverflow的新手!我編輯了我的帖子並添加了我的代碼。 – Zfrieden

回答

0

呀,使用

import glob 
list_of_pdf_filenames = glob.glob('*pdf') 

返回目錄中的所有PDF文件名列表。

**編輯:**

通過將開放()語句的循環中,我能得到這個代碼在我的計算機上運行:

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) 
+0

謝謝你的幫助!我可以找到目錄中的所有PDF文件名列表沒有問題。我無法在目錄中查找這些PDF文件中的頁面數量。 – Zfrieden

+0

@ Zfrieden http://stackoverflow.com/a/17931249/3110529試試這個 – Dillanm

+0

Dillanm他得到了一個權限錯誤 –

相關問題