在一行代码中打开读取并关闭文件

2024-09-22 14:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我用:

pageHeadSectionFile = open('pagehead.section.htm','r')
output = pageHeadSectionFile.read()
pageHeadSectionFile.close()

但是为了让代码看起来更好,我可以:

output = open('pagehead.section.htm','r').read()

使用上述语法时,如何关闭文件以释放系统资源?


Tags: 文件代码closereadoutput语法sectionopen
3条回答

使用CPython,您的文件将在执行行之后立即关闭,因为文件对象将立即被垃圾回收。不过,有两个缺点:

  1. 在与CPython不同的Python实现中,文件通常不会立即关闭,而是在稍后的时间关闭,这超出了您的控制范围。

  2. 在Python3.2或更高版本中,如果启用,则将抛出ResourceWarning

最好再投资一条线:

with open('pagehead.section.htm','r') as f:
    output = f.read()

这将确保在所有情况下正确关闭文件。

您不必真正关闭它—无论是在垃圾收集期间还是在程序退出时,Python都会自动关闭它。但正如@delnan所指出的,出于各种原因明确关闭它是更好的做法。

所以,你可以做些什么来保持简洁明了:

with open('pagehead.section.htm','r') as f:
    output = f.read()

我想现在只有两行字,可读性很强。

Python标准库Pathlib模块执行您所需的操作:

Path('pagehead.section.htm').read_text()

不要忘记导入路径:

jsk@dev1:~$ python3
Python 3.5.2 (default, Sep 10 2016, 08:21:44)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pathlib import Path
>>> (Path("/etc") / "hostname").read_text()
'dev1.example\n'

在Python 27上安装后端口的^{}^{}

相关问题 更多 >