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

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

技术背景

在Python编程中,经常需要读取文件内容并逐行处理,将文件内容存储为列表是一种常见的需求。例如,处理文本文件、配置文件等场景都可能会用到。Python提供了多种方法来实现文件的逐行读取和存储为列表,以下将详细介绍这些方法。

实现步骤

1. 打开文件

在Python中,最常用的打开文件的函数是open,它接受文件名作为必需参数,还可以指定模式和缓冲等可选参数。模式默认为r,表示只读。

1
2
3
4
5
6
7
8
# 打开当前工作目录下的文件
open('afile')
# 相对路径
open('adir/afile')
# 绝对路径(Windows)
open('C:/users/aname/afile')
# 绝对路径(Linux)
open('/usr/local/afile')
PYTHON

为了确保文件在使用后正确关闭,推荐使用with语句:

1
2
3
with open(filename) as f:
# 对文件进行操作
pass
PYTHON

2. 读取文件

文件对象支持Python的迭代协议,可以逐行读取文件内容。

1
2
3
with open(filename) as f:
for line in f:
print(line)
PYTHON

默认情况下,每行末尾会包含换行符\n,如果不需要可以使用rstrip()方法去除:

1
2
3
with open(filename) as f:
for line in f:
print(line.rstrip())
PYTHON

3. 存储内容为列表

将读取的文件内容存储为列表有多种方法,以下是几种常见的方式:

使用list函数

1
2
with open(filename) as f:
lst = list(f)
PYTHON

使用列表推导式

1
2
with open(filename) as f:
lst = [line.rstrip() for line in f]
PYTHON

使用readlines()方法

1
2
with open(filename) as f:
lst = f.readlines()
PYTHON

使用read().splitlines()方法

1
2
with open(filename) as f:
lst = f.read().splitlines()
PYTHON

核心代码

以下是一些常见的读取文件并存储为列表的代码示例:

示例1:使用列表推导式去除换行符

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

示例2:逐行处理文件

1
2
3
with open(filename) as file:
for line in file:
print(line.rstrip())
PYTHON

示例3:使用walrus运算符(Python 3.8及以上)

1
2
3
with open(filename) as file:
while line := file.readline():
print(line.rstrip())
PYTHON

示例4:使用pathlib模块

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

最佳实践

  • 使用with语句:确保文件在使用后正确关闭,避免资源泄漏。
  • 逐行处理大文件:对于大文件,逐行读取和处理可以减少内存占用。
  • 根据需求选择合适的方法:如果需要去除换行符,可以使用列表推导式或splitlines()方法;如果需要保留换行符,可以使用readlines()方法。

常见问题

内存问题

如果文件非常大,将整个文件内容存储在内存中可能会导致内存不足。建议逐行处理文件,而不是一次性将所有内容读取到列表中。

换行符问题

不同操作系统的换行符可能不同(Windows为\r\n,Linux和Mac为\n),在处理文件时需要注意。可以使用rstrip()方法去除换行符,确保处理结果的一致性。

文件编码问题

在读取文件时,需要指定正确的编码格式,否则可能会出现乱码问题。可以在open函数中使用encoding参数指定编码格式,例如encoding='UTF-8'


Python文件逐行读取并存储为列表的方法
https://119291.xyz/posts/python-file-line-by-line-reading-and-list-storage/
作者
ww
发布于
2025年5月23日
许可协议