是否有单行读取Python中文件的所有行,而不是标准:
f = open('x.txt')
cts = f.read()
f.close()
似乎经常这样做,所以必须有一个单行。有什么想法吗?
答案 0 :(得分:93)
这会将内容放入Python 2.6 1 及以上的单个字符串中:
with open('x.txt') as x: f = x.read()
这将创建一个行列表:
with open('x.txt') as x: f = x.readlines()
这些方法保证在读取后立即关闭输入文件。
脚注:
from __future__ import with_statement
。不保证立即关闭的旧方法是使用它来创建单个字符串:
f = open('x.txt').read()
这是为了创建一个行列表:
f = open('x.txt').readlines()
实际上它会在某些版本的CPython中立即关闭,但在Jython,IronPython以及可能是CPython的未来版本时,“只有当垃圾收集器到达它时才关闭”。
答案 1 :(得分:1)
如果您使用的是Python3,请确保正确遵守文件的输入编码,例如:
import codecs
with codecs.open(filename, 'r', encoding="utf8") as file:
cts = file.read()
在Python3 codec list中找到编解码器名称列表。 (无论何时你需要任何非ASCII输入,这种机制对于Python2也是可取的)
答案 2 :(得分:0)
Starting in Python 3.5,您可以使用pathlib
模块获得更现代的界面。作为Python 3,它在读取文本和读取字节之间进行了区分:
from pathlib import Path
text_string = Path('x.txt').read_text() # type: str
byte_string = Path('x.txt').read_bytes() # type: bytes