Python文件灌浆

是否有一种单行代码可以读取Python中文件的所有行,而不是标准行:

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

似乎经常这样做,以至于必须有一层。 有任何想法吗?

Mike Caron asked 2020-08-09T22:26:47Z
2个解决方案
97 votes

在Python 2.61及更高版本中,这会将内容插入单个字符串中:

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

这将创建行列表:

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

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

脚注:

  1. 此方法也可以在使用from __future__ import with_statement的Python 2.5中使用。

不保证立即关闭的较旧方法是使用此方法创建单个字符串:

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

这将创建行列表:

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

实际上,它将在某些版本的CPython中立即关闭,但在Jython,IronPython以及可能的将来版本的CPython中“仅在垃圾收集器出现时才关闭”。

Alex Martelli answered 2020-08-09T22:27:23Z
1 votes

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

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

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

Lutz Prechelt answered 2020-08-09T22:27:48Z
translate from https://stackoverflow.com:/questions/1631897/python-file-slurp