0

正如tempfile.mktempPython 2.7 中所贬值的那样,我生成了一个临时文件的唯一路径,如下所示:

temp = tempfile.NamedTemporaryFile(suffix=".py")
path_to_generated_py = temp.name
temp.close()
# now I use path_to_gerated_py to create a python file

这是 Python 2.7 中推荐的方式吗?当我立即关闭临时文件时,它看起来像是在滥用NamedTemporaryFile......

4

1 回答 1

3

的直接替换tempfile.mktemp()tempfile.mkstemp(). 后者创建文件,如NamedTemporaryFile,因此您必须关闭它(如您的代码片段中所示)。不同NamedTemporaryFile之处在于文件在关闭时不会被删除。这实际上是必需的:您的版本具有理论上的竞争条件,其中两个进程可能以相同的临时文件名结束。如果您改用mkstemp()该文件,则该文件永远不会被删除,并且可能会被您使用的第 3 方库覆盖 --- 但在任何时间点,该文件都存在,因此不会有另一个进程会创建一个同名临时文件。

于 2012-12-08T15:21:07.907 回答