为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2021-08-14 17:21:39
我正在尝试从我的 python 脚本打开文本编辑器,我注意到一些显然与我对tempfile文档的理解相矛盾的东西。我的实验开始于 Alex Martelli 的回答。我的代码 -import osimport tempfileimport subprocessf = tempfile.NamedTemporaryFile(mode='w+t', delete=True)n = f.nameprint('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? : TrueDoes exist? : FalseHello 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)))
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信