2014-02-26 54 views
0

我有一個簡單的使用Python Twisted編寫的Web服務器。用戶可以登錄並使用它來生成特定於該用戶的某些報告(pdf格式)。該報告由一個.tex模板文件構成,我可以根據用戶替換某些內容,包括嵌入用戶特定的圖形(.png或類似圖形),然後使用命令行程序pdflatex生成pdf。可以在linux命令行程序中看到python臨時文件嗎?

當前圖表保存在tmp文件夾中,然後在調用pdflatex之前將該路徑放入.tex模板中。但是,當用戶數量增加時,這可能會引發大量問題,所以我想使用臨時文件(tempfile模塊)而不是真正的tmp文件夾。有什麼辦法可以讓pdflatex看到這些臨時文件嗎?還是我這樣做是錯誤的?

+1

請參閱http://stackoverflow.com/questions/18280245/where-does-python-tempfile-writes-its-files?rq=1。 –

+4

你可以使用'tempfile.NamedTemporaryFile',如果這就是你的意思。只要確保在您允許文件自行刪除之前完成pdflatex即可完成。 –

回答

1

沒有它很難告訴你如何任何代碼,但

有沒有什麼辦法可以讓pdflatex看到這些臨時文件?

是的,你可以通過使用named temporary file打印路徑臨時文件:

>>> with tempfile.NamedTemporaryFile() as temp: 
...  print temp.name 
... 
/tmp/tmp7gjBHU 
1

正如評論你可以使用tempfile.NamedTemporaryFile。問題在於,一旦它關閉,它將被刪除。這意味着您必須運行pdflatex,而該文件仍在python中引用。 作爲一種替代方法,您可以用隨機生成的名稱保存圖片。 tempfile旨在允許您以一致的方式在各種平臺上創建臨時文件。這不是你所需要的,因爲我總是會在同一個web服務器上運行腳本。

你可以使用uuid模塊生成隨機文件名:

import uuid 
for i in xrange(3): 
    print(str(uuid.uuid4())) 

的保存照片顯式地使用隨機名稱,並通過將其插入到TEX文件。 運行pdflatex後,您明確地必須刪除該文件,這是該方法的缺點。

相關問題