직장에서 작업을 쉽게하기 위해 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()
현재 상태로는 (오류 예외의 메시지가 아닌 파이썬에 의해 반환 된 오류와 같이) 메시지 다음 중지 단 하나의 오류를 인쇄 것으로 보인다. 나는 잠시 동안 그것을 꼼짝 않고 바라 보았다. 그리고 나는 정말로 여기에서 어디로 가야하는지 모른다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
두 번째 예제에서 오타가 아닌지 정확히 알 수는 있지만 마지막 줄은 올바르게 들여 쓰여지지 않습니다. – ely