我正在尝试从我的 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)))
各种读取流,输入流……为什么最后要关闭
为什么输入classpath时,打印的文件长度在容器关闭之前,什么都不输入时(依赖applicationContex)打印的文件长度在容器关闭之后?
临时文件无法删除
为什么我创建了文件目录和文件都没有显示,刷新也没有显示。 但是可以正常地读写?
相关分类