Python 文件读取
有没有一种简单的方法可以用一行代码在Python中读取文件的所有行,而不是用下面这种标准的方法:
f = open('x.txt')
cts = f.read()
f.close()
看起来这个操作这么常见,应该有一种一行代码就能搞定的办法。谁有什么想法吗?
3 个回答
1
如果你在使用Python3,确保你正确处理文件的输入编码,比如:
import codecs
with codecs.open(filename, 'r', encoding="utf8") as file:
cts = file.read()
你可以在Python3的编码列表中找到编码名称的列表。
(这个方法在你使用Python2时也很有用,特别是当你需要处理非ASCII字符的输入时)
12
从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
111
这个方法可以在Python 2.6及以上版本中把内容读入一个字符串:
with open('x.txt') as x: f = x.read()
而这个方法则会创建一个行的列表:
with open('x.txt') as x: f = x.readlines()
这些方法确保在读取完后,输入文件会立即关闭。
注释:
- 这种方法在Python 2.5中也可以使用,只需加上
from __future__ import with_statement
。
一个较旧的方法是用这个来创建一个字符串,但它不保证文件会立即关闭:
f = open('x.txt').read()
而这个方法则用来创建一个行的列表:
f = open('x.txt').readlines()
实际上,在某些版本的CPython中,文件会立即关闭,但在Jython、IronPython,以及可能的某些未来版本的CPython中,文件的关闭会等到“垃圾回收器处理它的时候”。