当前位置:  开发笔记 > 编程语言 > 正文

在Python中,如何创建一个持续到下一次运行的临时文件?

如何解决《在Python中,如何创建一个持续到下一次运行的临时文件?》经验,为你挑选了2个好方法。

我需要创建一个我只使用一次的文件夹,但需要在下次运行之前存在它.看起来我应该在标准库中使用tmp_file模块,但我不知道如何获得我想要的行为.

目前,我正在执行以下操作来创建目录:

randName = "temp" + str(random.randint(1000, 9999))
os.makedirs(randName)

当我想删除目录时,我只需要查找一个带有"temp"的目录.
这似乎是一个肮脏的黑客,但我不确定目前更好的方式.

顺便说一下,我需要文件夹的原因是我启动了一个使用以下文件夹的进程:

subprocess.Popen([command], shell=True).pid

然后退出我的脚本让其他进程完成工作.



1> dF...:

使用4位随机数创建文件夹是不安全的,您还需要担心与程序的其他实例发生冲突.

一个更好的方法是使用创建文件夹tempfile.mkdtemp,它完全符合您的要求(即当您的脚本退出时不会删除该文件夹).然后,您将文件夹名称作为参数传递给第二个Popen'ed脚本,它将负责删除它.



2> Ryan Bright..:

你所建议的是危险的.如果其他人试图创建这些目录,您可能会遇到竞争条件 - 包括您的应用程序的其他实例.此外,删除任何包含"temp"的内容可能会导致删除超出您的意图.正如其他人提到的那样,tempfile.mkdtemp可能是最安全的方式.以下是您所描述的示例,包括启动子进程以使用新目录.

import tempfile
import shutil
import subprocess

d = tempfile.mkdtemp(prefix='tmp')
try:
    subprocess.check_call(['/bin/echo', 'Directory:', d])
finally:
    shutil.rmtree(d)

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有