逐行读取
方法1:使用 for 循环逐行读取(推荐)
with open() 打开文件后,可以直接使用 for 循环逐行读取文件内容。
with open('example.txt', 'r', encoding='utf-8') as file:
for line in file:
print(line.strip()) # 使用 strip() 去除每行末尾的换行符
file 是一个文件对象,它是一个可迭代对象,每次迭代返回文件的一行。
line.strip() 用于去除每行末尾的换行符 \n,也可以去除行首和行尾的空白字符。
- 使用
strip()
方法可以删除字符串两端的空白字符(包括空格和换行符)。 - 使用
rstrip()
方法可以删除字符串末尾的空白字符,但保留换行符。 - 使用
lstrip()
方法可以删除字符串开头的空白字符。
方法2:使用 read() 方法并按行分割
read() 方法会读取整个文件内容为一个字符串,然后可以使用 splitlines() 方法将其按行分割。
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read() # 读取整个文件内容
lines = content.splitlines() # 按行分割
for line in lines:
print(line)
方法3:使用 readlines() 方法
readlines() 方法会读取整个文件内容,并将其按行分割为一个列表。每行是一个字符串,包括换行符 \n。
优点:
- 文件对象的生命周期:with 语句会自动管理文件的打开和关闭。文件对象在 with 代码块之外是不可用的,因为文件已经被关闭。
- 数据持久化:通过将文件内容存储到列表中,我们可以在 with 代码块之外继续使用这些数据,而不需要重新打开文件。
# 定义一个空列表来存储文件的每一行
lines = []
# 使用 with 打开文件
with open('example.txt', 'r', encoding='utf-8') as file:
# 使用 for 循环逐行读取文件内容,并将每一行添加到列表中
for line in file:
# 使用 strip() 去除每行末尾的空格和换行符
clean_line = line.strip() #
lines.append(clean_line)
# 在 with 代码块之外使用列表
print("文件内容如下:")
for line in lines: # 列表 lines 已经包含了文件的所有行,因此可以在代码块之外自由使用这个列表
print(line)
文件内容如下:
第一行内容
第二行内容
第三行内容
这种方法会将整个文件内容加载到内存中,因此不适用于非常大的文件。
如果文件较大,建议使用第一种方法(for 循环逐行读取)。、、
方法4:使用 readline() 方法
readline() 方法每次调用读取文件的一行,包括换行符 \n。可以通过循环调用 readline() 来逐行读取文件。
with open('example.txt', 'r', encoding='utf-8') as file:
while True:
line = file.readline()
if not line: # 如果读取到文件末尾,line 为空字符串
break
print(line.strip()) # 去除每行末尾的换行符
方法5:使用列表推导式
如果需要对文件的每一行进行某种操作,可以使用列表推导式。
with open('example.txt', 'r', encoding='utf-8') as file:
lines = [line.strip() for line in file] # 使用列表推导式逐行读取并处理
for line in lines:
print(line)
这种方法同样会将整个文件内容加载到内存中,因此适用于较小的文件。