से लेटेक्स संकलित करें मैंने लेटेक्स का उपयोग करके पीडीएफ फ़ाइल के रूप में पास स्ट्रिंग को संकलित करने के लिए कुछ पायथन फ़ंक्शन बनाया है। समारोह अपेक्षित काम करता है और काफी उपयोगी रहा है, इसलिए मैं इसे सुधारने के तरीकों की तलाश करता हूं।पाइथन
कोड है जो मेरे पास है:
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)
आप अपने पीडीएफ को आपके द्वारा बनाए गए फ्लेडर में बना सकते हैं, पीडीएफ को एक बार पूरा कर लेते हैं और फ़ोल्डर को रिकर्सिवली से हटा देते हैं। – Theolodis
ये फ़ाइलें अनियंत्रित नहीं हैं, उनका उपयोग 'लेटेक्स'' द्वारा किया जाता है। आप उन्हें नहीं बना सकते हैं, आप केवल बाद में उन्हें हटा सकते हैं (या वर्तमान निर्देशिका के साथ प्रक्रिया को 'tempfile.mkdtemp()' ''पर इंगित करें)। – fjarri
उन फ़ाइलों को 'लाटेक्स' के संचालन के लिए आवश्यक है। देखें [यह प्रश्न] (http://tex.stackexchange.com/questions/11123/prevent-pdflatex-from-writing-a-bunch-of-files) TEX.SX – darthbith