为什么即使在关闭临时文件后我也可以写入和读取它?

我正在尝试从我的 python 脚本打开文本编辑器,我注意到一些显然与我对tempfile文档的理解相矛盾的东西。


我的实验开始于 Alex Martelli 的回答。

我的代码 -


import os

import tempfile

import subprocess


f = tempfile.NamedTemporaryFile(mode='w+t', delete=True)

n = f.name

print('Does exist? : {0}'.format(os.path.exists(n)))

f.close()

print('Does exist? : {0}'.format(os.path.exists(n)))


subprocess.run(['nano', n])

with open(n) as f:

    print (f.read())


print('Does exist? : {0}'.format(os.path.exists(n)))

输出:


Does exist? : True

Does exist? : False

Hello from temp file.


Does exist? : True

在代码中,我显式调用close了用 声明的文件对象delete=True,但即使如此,我也可以向其中写入和读取内容。我不明白为什么会这样。根据文档-


如果 delete 为 true(默认值),则在关闭文件后立即将其删除。


如果调用close删除文件,那么我不应该能够写入然后读取它。但它会显示您在执行时输入的文件的正确内容nano。和tempfile 一样,该文件在我打开终端并运行脚本的目录中不可见。更奇怪的是,os.path.exists前两次工作正常,第三次可能不正确。

我在这里错过了什么吗?


附加实验:

如果我运行以下代码,那么我可以清楚地看到创建的文件。但这在原始代码中不会发生。


n = '.temp'

subprocess.run(['nano', n])

with open(n) as f:

    print (f.read())


print('Does exist? : {0}'.format(os.path.exists(n)))


UYOU
浏览 186回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python