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

时间:2018-07-15 17:33:34

标签: python temporary-files interprocess

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

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

这可靠吗,或者操作系统在关闭临时文件后可能会删除它吗?还是有可能将文件重用于需要临时文件的另一个进程?有什么机会破坏我的数据吗?

1 个答案:

答案 0 :(得分:0)

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