我可以依靠临时文件在关闭后保持不变吗?

Can I rely on a temporary file to remain unchanged after I close it?

我正在使用临时文件在两个进程之间交换数据:

  1. 我创建一个临时文件并向其中写入一些数据
  2. 我启动一个读取和修改文件的子进程
  3. 我从文件中读取了结果

出于演示目的,这里有一段代码使用子进程来递增数字:

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) 创建了文件,然后将其关闭并稍后重新打开。 我的问题是:

这个靠谱吗,有没有可能是我关闭临时文件后操作系统把它删除了?或者该文件可能会被另一个需要临时文件的进程重用?有没有可能有什么东西会破坏我的数据?

文档没有说。操作系统可能会自动 一段时间后删除文件,具体取决于关于 它是如何设置的以及使用什么目录。如果你想要坚持, 持久性代码:使用常规文件,而不是临时文件。