我正在使用一个临时文件在两个进程之间交换数据:
出于演示目的,下面是一段代码,该代码使用子过程来增加数字:
import subprocess
import sys
import tempfile
# create the file and write the data into it
with tempfile.NamedTemporaryFile('w', delete=False) as file_:
file_.write('5') # input: 5
path = file_.name
# start the subprocess
code = r"""with open(r'{path}', 'r+') as f:
num = int(f.read())
f.seek(0)
f.write(str(num + 1))""".format(path=path)
proc = subprocess.Popen([sys.executable, '-c', code])
proc.wait()
# read the result from the file
with open(path) as file_:
print(file_.read()) # output: 6
正如您在上面看到的,我已经使用tempfile.NamedTemporaryFile(delete=False)
创建了文件,然后将其关闭,然后重新打开。
我的问题是:
这可靠吗,或者操作系统在关闭临时文件后可能会删除它吗?还是有可能将文件重用于需要临时文件的另一个进程?有什么机会破坏我的数据吗?
答案 0 :(得分:0)
文档未说明。操作系统可能会自动 一段时间后删除文件,具体取决于有关 如何设置以及使用什么目录。要坚持下去 持久性代码:使用常规文件,而不是临时文件。