python - 是否需要关闭没有引用它们的文件?

标签 python python-2.7 file

作为一个完全的编程初学者,我试图理解打开和关闭文件的基本概念。我正在做的一个练习是创建一个脚本,允许我将内容从一个文件复制到另一个文件。

in_file = open(from_file)
indata = in_file.read()

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

out_file.close()
in_file.close()

我试图缩短这段代码并想出了这个:

indata = open(from_file).read()
open(to_file, 'w').write(indata)

这很有效,对我来说看起来更有效率。然而,这也是我感到困惑的地方。我想我遗漏了对打开文件的引用;不需要 in_file 和 out_file 变量。但是,这是否会给我留下两个打开的文件,但没有提及它们?我该如何关闭这些,还是不需要?

非常感谢任何有助于阐明该主题的帮助。

最佳答案

处理这个问题的pythonic方法是使用with context manager :

with open(from_file) as in_file, open(to_file, 'w') as out_file:
    indata = in_file.read()
    out_file.write(indata)

与这样的文件一起使用,with 将确保为您完成所有必要的清理工作,即使 read()write() 抛出错误。

关于python - 是否需要关闭没有引用它们的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046167/

相关文章:

python - Scrapy 蜘蛛在从列表中的第一个城市获得结果后停止运行

python - Ruby 中的哈希值并将 python 转换为 ruby

python - 将数字转换为特殊的日期时间

python - 使用 PyPDF2 合并两个 pdf 文件时出错

Python Pylab,如何更改指定 Axis 大小的标签的大小

python - 变量和指数问题

python-2.7 - 如何在python中获取特定数量的输入

file - 在 MATLAB 中,我可以在同一个文件中同时拥有脚本和函数定义吗?

c# - 如何将文件 (PDF) 插入到 varbinary SQL Server 列中并稍后检索它?

spring - 禁用 Controller 的Spring Boot分段上传