2016-05-16 61 views
0

我正在使用一個腳本,將輸入的pdf覆蓋到基本上是信頭的另一個腳本上。但是,我不確定如何允許進程自動化,以允許一次處理一個文件,而無需事先知道文件的名稱。我正在使用Python 2.7。允許在python腳本中處理未知的文件名

from pyPdf import PdfFileWriter, PdfFileReader 


output = PdfFileWriter() 
input1 = PdfFileReader(file("example.pdf", "rb")) 

# add page 1 from input1 to output document, unchanged 
output.addPage(input1.getPage(0)) 

# add page 2 from input1, but first add a watermark from another pdf: 
page2 = input1.getPage(0) 
watermark = PdfFileReader(file("template.pdf", "rb")) 
page2.mergePage(watermark.getPage(0)) 

output.addPage(page2) 


# finally, write "output" to document-output.pdf 
outputStream = file("example.pdf", "wb") 
output.write(outputStream) 
outputStream.close() 
+0

是否有可能將文件名作爲輸入而不是對其進行硬編碼? – jackwise

+0

這就是結束了工作! – jhan11

回答

0

謝謝所有的貢獻。 這就是我最終使用的:

from pyPdf import PdfFileWriter, PdfFileReader 
import os, sys, glob, shutil 

path = glob.glob ('p:\letter2pdf\processing\*.pdf') 
template = 'p:/letter2pdf/processing/template/template.pdf' 
dest1 = 'p:\letter2pdf\output' 
dest2 = 'p:\letter2pdf\processing' 

for files in sorted(path): 

    output = PdfFileWriter() 
    input1 = PdfFileReader(file(files,"rb")) 

    print "title = %s" % (input1.getDocumentInfo().title) 

# add page 1 from input1 to output document, unchanged 
    output.addPage(input1.getPage(0)) 

#add a watermark from another pdf: 
    page2 = input1.getPage(0) 
    watermark = PdfFileReader(file (template, "rb")) 
    page2.mergePage(watermark.getPage(0)) 



# finally, write "output" to document-output.pdf 
    outputStream = file(input1.getDocumentInfo().title, "wb") 
    output.write(outputStream) 
    outputStream.close() 
0

你的問題似乎有一個簡單的解決方案與命令行參數。

您可以導入sys模塊並使用sys.argv來獲取命令行參數列表。有一個教程,應該在這個link 2.7工作。 sys.argv是一個數組,sys.argv [1]是您傳遞的第一個參數,因爲sys.argv [0]是可執行文件的名稱。

從可以執行的命令行:

python your_program.py file_name_to_work_with.pdf 

它可以插入命令行參數與IDLE,如果你正在使用的。如果你需要知道如何留下評論。

+0

我看到你的問題也詢問有關使用多個文件運行你的代碼。有很多方法可以做到這一點。例如,您可以傳遞可變數量的命令行參數,這些參數都將作爲文件的名稱到您的程序中,並讓您的程序通過循環檢查sys.argv的長度來處理它們。 –

+0

我結束了去不同的路線,出於某種原因,當我嘗試使用sys.argv時,我不斷收到一個錯誤,說它出於某種原因超出範圍。 – jhan11

0

你可能會被最安全的東西,如argparse

argparse爲您提供了非常felxible操縱命令行參數來實現腳本的控制界面。

$ python your_program.py -t <template> -i <input1> <input2>