我已经做了一些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