首页 > 解决方案 > Python .txt 文件迭代和 readlines()

问题描述

我有点坚持逐行读取文件,将其分配给变量并将其余代码应用于该变量。我的代码正在做它需要做的事情,我只是坚持迭代文件。我在尝试时收到“混合迭代和读取方法会丢失数据”错误:

for line in file:
    user_input = file.readlines()

这样做我只能读取最后一行:

for line in user:
    user_input = line

那么我要如何读取文件中的每一行呢?我觉得这将是一个重复的问题,但我只是不知道该怎么做。

标签: pythonfileiteration

解决方案


如果要逐行迭代,请执行以下操作:

for line in file:
    do_something_with(line)

您的第二个版本不起作用,因为您所做的只是user_input一遍又一遍地将局部变量重新分配给每一行,所以最后,您只有最后一个。

你实际上需要对这条线做一些事情,就在循环中。这是否意味着处理它并编写一些输出,或者将其添加到列表、字典或其他集合中以供以后使用,取决于您要执行的操作。

例如,如果您正在构建文件中所有单词的集合,您可以这样做:

words = set()
for line in file:
    words |= set(line.split())

另一方面,如果您想一次读取整个文件以获取所有行的列表,请执行以下操作:

lines = file.readline()

… 或这个:

lines = list(file)

如果您需要多次循环这些行,或者以任意顺序访问它们,这可能非常有用。

如果没有,无论你想做什么lines,你都可以直接使用file,所以你在浪费时间和内存来构建这个列表。


您的代码将两者混合在一起:

for line in file:
    user_input = file.readline()

换句话说,对于文件中的每一行,您都在尝试读取整个文件。这没有任何意义。要么对每一行做一些事情,要么只读取整个文件一次。


推荐阅读