我已經做了一些python函數來編譯傳遞的字符串爲pdf使用latex的文件。該功能按預期工作並且非常有用,因此我尋找改進它的方法。從python編譯膠乳
,我有代碼:
def generate_pdf(pdfname,table):
"""
Generates the pdf from string
"""
import subprocess
import os
f = open('cover.tex','w')
tex = standalone_latex(table)
f.write(tex)
f.close()
proc=subprocess.Popen(['pdflatex','cover.tex'])
subprocess.Popen(['pdflatex',tex])
proc.communicate()
os.unlink('cover.tex')
os.unlink('cover.log')
os.unlink('cover.aux')
os.rename('cover.pdf',pdfname)
與代碼的問題是,它創造一堆名爲蓋在事後被刪除工作目錄中的文件。
如何避免在工作目錄下創建不需要的文件?
解決方案
def generate_pdf(pdfname,tex):
"""
Genertates the pdf from string
"""
import subprocess
import os
import tempfile
import shutil
current = os.getcwd()
temp = tempfile.mkdtemp()
os.chdir(temp)
f = open('cover.tex','w')
f.write(tex)
f.close()
proc=subprocess.Popen(['pdflatex','cover.tex'])
subprocess.Popen(['pdflatex',tex])
proc.communicate()
os.rename('cover.pdf',pdfname)
shutil.copy(pdfname,current)
shutil.rmtree(temp)
您可以在您創建的文件夾中構建您的pdf,完成後移出pdf並遞歸刪除文件夾。 – Theolodis
這些文件不是不需要的,它們被「latex」使用。你不能創建它們,你只能像現在這樣去除它們(或者用當前目錄指向''tempfile.mkdtemp()'')來運行這個過程。 – fjarri
'LaTeX'需要這些文件才能運行。請參閱[這個問題](http://tex.stackexchange.com/questions/11123/prevent-pdflatex-from-writing-a-bunch-of-files)TEX.SX – darthbith