我可以依靠临时文件在关闭后保持不变吗?
Can I rely on a temporary file to remain unchanged after I close it?
我正在使用临时文件在两个进程之间交换数据:
- 我创建一个临时文件并向其中写入一些数据
- 我启动一个读取和修改文件的子进程
- 我从文件中读取了结果
出于演示目的,这里有一段代码使用子进程来递增数字:
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)
创建了文件,然后将其关闭并稍后重新打开。
我的问题是:
这个靠谱吗,有没有可能是我关闭临时文件后操作系统把它删除了?或者该文件可能会被另一个需要临时文件的进程重用?有没有可能有什么东西会破坏我的数据?
文档没有说。操作系统可能会自动
一段时间后删除文件,具体取决于关于
它是如何设置的以及使用什么目录。如果你想要坚持,
持久性代码:使用常规文件,而不是临时文件。
我正在使用临时文件在两个进程之间交换数据:
- 我创建一个临时文件并向其中写入一些数据
- 我启动一个读取和修改文件的子进程
- 我从文件中读取了结果
出于演示目的,这里有一段代码使用子进程来递增数字:
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)
创建了文件,然后将其关闭并稍后重新打开。
我的问题是:
这个靠谱吗,有没有可能是我关闭临时文件后操作系统把它删除了?或者该文件可能会被另一个需要临时文件的进程重用?有没有可能有什么东西会破坏我的数据?
文档没有说。操作系统可能会自动 一段时间后删除文件,具体取决于关于 它是如何设置的以及使用什么目录。如果你想要坚持, 持久性代码:使用常规文件,而不是临时文件。