Python文件Slurp

Python File Slurp

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

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

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


这将在python 2.61及更高版本中将内容分解为一个字符串:

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

这将创建一个行列表:

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

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

脚注:

  • 这种方法也可以在使用from __future__ import with_statement的python 2.5中使用。
  • 不保证立即关闭的旧方法是使用此方法创建单个字符串:

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

    创建一个行列表:

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

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


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

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

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