Python中逐行读取文件并存储为列表的方法

Python中逐行读取文件并存储为列表的方法

技术背景

在Python编程中,经常需要读取文件内容并将其逐行存储到列表中。例如,在处理文本数据、配置文件或日志文件时,将每行数据作为列表的一个元素,可以方便后续对数据进行处理和分析。

实现步骤

1. 打开文件

使用open()函数打开文件,建议使用with语句,它会自动管理文件的打开和关闭,避免资源泄漏。示例代码如下:

1
2
3
with open('filename', 'r', encoding='UTF-8') as file:
# 后续操作
pass

2. 逐行读取文件并存储为列表

以下是几种常见的方法:

方法一:使用列表推导式并去除每行末尾的空白字符

1
2
with open('filename') as file:
lines = [line.rstrip() for line in file]

方法二:使用readlines()方法

1
2
with open('filename') as f:
lines = f.readlines()

此方法会将文件的所有行读取到一个列表中,每行末尾的换行符会保留。若要去除换行符,可以使用列表推导式:

1
2
with open('filename') as f:
lines = [line.rstrip('\n') for line in f]

方法三:使用显式循环逐行添加到列表

1
2
3
4
with open("file.txt") as file_in:
lines = []
for line in file_in:
lines.append(line)

方法四:使用pathlib模块(Python 3.4及以上)

1
2
3
from pathlib import Path
p = Path('my_text_file')
lines = p.read_text().splitlines()

核心代码

以下是一个完整的示例,展示了如何使用不同方法将文件逐行读取并存储为列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 方法一:列表推导式
with open('test.txt') as file:
lines1 = [line.rstrip() for line in file]
print("方法一结果:", lines1)

# 方法二:readlines()
with open('test.txt') as f:
lines2 = f.readlines()
lines2 = [line.rstrip('\n') for line in lines2]
print("方法二结果:", lines2)

# 方法三:显式循环
with open('test.txt') as file_in:
lines3 = []
for line in file_in:
lines3.append(line.rstrip())
print("方法三结果:", lines3)

# 方法四:pathlib模块
from pathlib import Path
p = Path('test.txt')
lines4 = p.read_text().splitlines()
print("方法四结果:", lines4)

最佳实践

  • 大文件处理:如果处理的文件非常大,将整个文件加载到内存中可能会导致内存不足。此时,建议逐行处理文件,而不是将所有行存储在列表中。示例代码如下:
1
2
3
4
with open('large_file.txt') as file:
for line in file:
# 处理每行数据
print(line.rstrip())
  • 编码问题:在打开文件时,建议明确指定文件的编码,如encoding='UTF-8',以避免编码错误。

常见问题

1. 内存问题

如果文件非常大,将所有行存储在列表中可能会耗尽系统内存。可以采用逐行处理的方式,或者分块读取文件。

2. 换行符问题

使用readlines()方法读取的行末尾会包含换行符\n,如果不需要,可以使用rstrip()方法去除。

3. 文件未关闭问题

使用open()函数打开文件后,务必确保文件被关闭。使用with语句可以自动管理文件的打开和关闭,避免此问题。


Python中逐行读取文件并存储为列表的方法
https://119291.xyz/posts/2025-04-14.python-read-file-line-by-line-into-list/
作者
ww
发布于
2025年4月14日
许可协议