我編寫了一個腳本來讀取PDF元數據以簡化工作任務。目前的工作版本不從長遠來看非常有用:讀取PDF元數據並寫入CSV的腳本
from pyPdf import PdfFileReader
BASEDIR = ''
PDFFiles = []
def extractor():
output = open('windoutput.txt', 'r+')
for file in PDFFiles:
try:
pdf_toread = PdfFileReader(open(BASEDIR + file, 'r'))
pdf_info = pdf_toread.getDocumentInfo()
#print str(pdf_info) #print full metadata if you want
x = file + "~" + pdf_info['/Title'] + " ~ " + pdf_info['/Subject']
print x
output.write(x + '\n')
except:
x = file + '~' + ' ERROR: Data missing or corrupt'
print x
output.write(x + '\n')
pass
output.close()
if __name__ == "__main__":
extractor()
目前,你可以看到,我必須手動輸入工作目錄並手動填充PDF文件的列表。它也只是以可以複製/粘貼/分離到電子表格的格式打印終端中的數據。
我希望腳本可以自動運行在任何一個目錄中,並將其放入CSV文件以便於使用。到目前爲止:
from pyPdf import PdfFileReader
import csv
import os
def extractor():
basedir = os.getcwd()
extension = '.pdf'
pdffiles = [filter(lambda x: x.endswith('.pdf'), os.listdir(basedir))]
with open('pdfmetadata.csv', 'wb') as csvfile:
for f in pdffiles:
try:
pdf_to_read = PdfFileReader(open(f, 'r'))
pdf_info = pdf_to_read.getDocumentInfo()
title = pdf_info['/Title']
subject = pdf_info['/Subject']
csvfile.writerow([file, title, subject])
print 'Metadata for %s written successfully.' % (f)
except:
print 'ERROR reading file %s.' % (f)
#output.writerow(x + '\n')
pass
if __name__ == "__main__":
extractor()
在當前狀態下它似乎只是打印一個錯誤(如,在異常的錯誤消息,不Python返回錯誤)消息,然後停止。我一直在盯着它一會兒,我真的不知道該從哪裏出發。任何人都可以將我指向正確的方向嗎?
不確定這是否只是一個錯字,但最後一行在第二個示例中沒有正確縮進。 – ely