代码之家  ›  专栏  ›  技术社区  ›  Mike Caron

python文件slurp

  •  40
  • Mike Caron  · 技术社区  · 16 年前

    是否有一个行来读取python中文件的所有行,而不是标准行:

    f = open('x.txt')
    cts = f.read()
    f.close()
    

    似乎这样做太频繁了,必须有一个一行。有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  93
  •   Alan W. Smith vishes_shell    8 年前

    这将在python 2.6中将内容分解成一个字符串。 及以上:

    with open('x.txt') as x: f = x.read()
    

    这将创建一个行列表:

    with open('x.txt') as x: f = x.readlines()
    

    这些方法保证在读取之后立即关闭输入文件。

    脚注:

    1. 这种方法也可以在python 2.5中使用 from __future__ import with_statement .

    一种更古老的方法 保证立即关闭是使用这个来创建一个字符串:

    f = open('x.txt').read()
    

    创建一个行列表:

    f = open('x.txt').readlines()
    

    实际上,在某些版本的cpython中,它会立即关闭,但在jython、Ironpython和未来版本的cpython中,“只有在垃圾收集器接近它时才会关闭”。

        2
  •  1
  •   Lutz Prechelt    12 年前

    如果您使用python3,请确保您正确遵守文件的输入编码,例如:

    import codecs
    with codecs.open(filename, 'r', encoding="utf8") as file:
        cts = file.read()
    

    在中查找编解码器名称列表 Python3 codec list . (无论何时需要任何非ASCII输入,python2也建议使用该机制)