文件打开:这是不好的Python风格?

Cla*_*diu 11 python file-io coding-style file

要读取文件的内容:

data = open(filename, "r").read()
Run Code Online (Sandbox Code Playgroud)

打开的文件立即停止在任何地方被引用,因此文件对象最终将关闭...并且它不应该影响使用它的其他程序,因为该文件仅用于读取而不是写入.

编辑:这实际上在我写的一个项目中咬了我 - 它促使我问这个问题.只有在内存不足时才清理文件对象,而不是在文件句柄用完时清理.因此,如果您经常这样做,最终可能会耗尽文件描述符并导致IO尝试打开文件以引发异常.

0x8*_*x89 30

仅供记录:这只是稍长,并立即关闭文件:

from __future__ import with_statement

with open(filename, "r") as f:
    data = f.read()
Run Code Online (Sandbox Code Playgroud)

  • +1我添加了`import`以防它们使用Python 2.5 :) (5认同)
  • 这根本没有意义.范围是相同的,无论是否有换行符.我不喜欢它作为样式,但范围不会进入它. (2认同)

sep*_*p2k 7

它确实会最终关闭,但最终可能不会很快.特别是如果你在循环中使用它,系统可能会在GC到达文件对象之前耗尽文件句柄.