Python 中如何把文件的每一行读入一个列表?

Python 把文件读成行列表:f.readlines() 一次性读入(含换行符),或列表推导式 [line.rstrip() for line in f]。大文件建议迭代处理。本文对比各方法。

最佳实践
Python 中如何把文件的每一行读入一个列表?封面

最快写法:f.readlines() 直接得到行列表(每行带 \n);想去掉换行符:[line.rstrip('\n') for line in f]。大文件注意内存,可改用迭代逐行处理。

readlines() 一次读入

with open('file.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

print(lines)  # ['第一行\n', '第二行\n', ...]

顺便去掉换行符

with open('file.txt', 'r', encoding='utf-8') as f:
    lines = [line.rstrip('\n') for line in f]

过滤空行/注释

with open('file.txt') as f:
    lines = [line.strip() for line in f if line.strip() and not line.startswith('#')]

大文件的内存考量

readlines() 把整个文件加载进内存。GB 级文件建议不建列表,直接迭代处理:

with open('huge.log') as f:
    for line in f:      # 内存中只有一行
        process(line)

常见问题(FAQ)

Q:readlines() 和 read().splitlines() 有区别吗?
A:结果接近。read().splitlines() 自动去掉换行符且能处理各种行尾(\r\n 等);readlines() 保留行尾。两者都是全量加载。

Q:只要前 N 行?
A:itertools.islice(f, N) 惰性取前 N 行,不会读完整个文件。

Q:编码错误中断读取?
A:open(..., errors='replace')errors='ignore' 容错,或先用 chardet 探测编码。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台