繁体   English   中英

为什么打开文件需要变量

[英]Why a variable is required to open files

我有一点概念问题。 为了写入文件“to_file”,这有效:

out_file = open(to_file, 'w')
out_file.write(indata)

......但这不是:

(open(to_file, 'w')).write(indata)

理论上,不应该换掉变量(out_file)定义的变量本身会产生相同的结果吗? 我很困惑为什么创建变量的额外步骤是必要的。

正如其他人指出的那样,您的代码实际上会打开并写入文件。 然而,...

在第二个单行代码中,您现在没有引用打开的文件。 因此,您无法关闭它或使用它做任何其他事情。

保持文件打开是资源泄漏。 如果您的程序立即关闭,Python将尝试在结束之前关闭该文件。 但由于各种原因,Python可能会失败。 例如,在您写入文件之后但程序结束之前,可能会删除包含该文件的可移动磁盘驱动器。 这可能会使可移动驱动器上的文件无法读取 - 我已经看到了这种情况。 如果你的程序没有立即关闭,你就会有这个额外的资源,它需要内存和其他不需要的资源。 如果您的程序持续很长时间,不断增长的资源可能会减慢或停止计算机。

即使你的程序马上关闭,这也是一个不好的习惯。 您不仅想编写程序,还希望编写能够在各种情况下正常运行的代码。 您可能会想“我永远不会在长期运行的程序中使用此代码。” 这种声明经常被证明是错误的。 编码很难 - 不要让自己变得更难。 避免你的第二个例子的“反模式”。

Python中有一个更好的模式用于使用with语句 阅读该链接并使用该模式而不是两个示例中的任何一个。

with open(to_file, 'w') as out_file:
    out_file.write(indata)

这两行打开文件,将数据写入文件,然后关闭文件。 如果要在文件关闭之前对文件执行更多操作,请将该代码放在with语句下的缩进部分中。

在Python 2.7中,您提供的两个示例都将工作并写入该文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM