用1行代码打开读取和关闭文件

现在我使用:

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

但为了使代码看起来更好,我可以这样做:

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

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


你不必关闭它 - Python会在垃圾回收或程序退出时自动执行它。 但是正如@delnan所指出的那样,最好由于各种原因明确关闭它。

所以,你可以做些什么来保持简短和明确:

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

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


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

  • 在与CPython不同的Python实现中,文件通常不会立即关闭,而是在以后超出您的控制范围。

  • 在Python 3.2或更高版本中,如果启用,这将抛出ResourceWarning

  • 最好另外投资一条线路:

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

    这将确保文件在任何情况下都能正确关闭。


    你可以做的是使用with语句:

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

    with语句会小心地调用给定对象的__exit__函数,即使代码中发生了不好的事情; 它接近try... finally语法。 对于open返回的对象, __exit__对应于文件关闭。

    该语句已在Python 2.6中引入。

    链接地址: http://www.djcxy.com/p/19627.html

    上一篇: open read and close a file in 1 line of code

    下一篇: AJAX JQuery Upload Image