Python .txt文件迭代和readlines()

时间:2018-05-01 04:19:29

标签: python file iteration

我对逐行读取文件,将其分配给变量并将其余代码应用于此变量感到困惑。我的代码正在完成它需要做的事情,我只是坚持迭代文件。我得到了#34;混合迭代和读取方法会丢失数据"我尝试时出错:

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

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

for line in user:
    user_input = line

那么我该如何阅读文件中的每一行?我觉得这将是一个重复的问题,但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果你想逐个遍历这些行,你可以这样做:

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()

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