linux命令行程序能看到python临时文件吗?

时间:2014-02-26 09:34:13

标签: python linux temporary-files

我有一个使用Python Twisted编写的简单Web服务器。用户可以登录并使用它来生成特定于该用户的某些报告(pdf格式)。该报告是通过一个.tex模板文件制作的,我根据用户替换某些内容,包括嵌入特定于用户的图形(.png或类似),然后使用命令行程序pdflatex生成pdf。

目前,图表保存在tmp文件夹中,然后在调用pdflatex之前将该路径放入.tex模板。但是当用户数量增加时,这可能会引发一大堆问题,因此我想使用临时文件(tempfile模块)而不是真正的tmp文件夹。有什么办法可以让pdflatex看到这些临时文件吗?或者我这样做是错误的吗?

2 个答案:

答案 0 :(得分:1)

没有任何代码,很难告诉你如何,但

  

有什么方法可以让pdflatex看到这些临时文件吗?

是的,您可以使用named temporary file

打印临时文件的路径
>>> with tempfile.NamedTemporaryFile() as temp:
...     print temp.name
... 
/tmp/tmp7gjBHU

答案 1 :(得分:1)

根据评论,您可以使用tempfile.NamedTemporaryFile。问题是,一旦关闭,它将被删除。这意味着你必须在python中引用文件的同时运行pdflatex。 作为替代方法,您可以使用随机生成的名称保存图片。 tempfile旨在允许您以一致的方式在各种平台上创建临时文件。这不是您所需要的,因为您总是会在同一个Web服务器上运行该脚本。

您可以使用uuid模块生成随机文件名:

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

使用随机名称明确保存图片并将其插入tex文件。 在运行pdflatex之后,你明确地必须删除该文件,这是该方法的缺点。