我为编译latex字符串成pdf文件制作了一些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)
代码存在的问题是它在工作目录中创建了一堆名为cover的文件,之后这些文件会被删除。
如何避免在工作目录中创建不必要的文件?
解决方案
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)
latex
使用。你不能不创建它们,只能像现在一样在之后删除它们(或在当前目录指向tempfile.mkdtemp()
的情况下运行该过程)。 - fjarriLaTeX
运行所必需的。请参阅 TEX.SX 上的 此问题。 - darthbithfs
模块,其中一种方法是创建一个内存文件系统。 - chepner