我对逐行读取文件,将其分配给变量并将其余代码应用于此变量感到困惑。我的代码正在完成它需要做的事情,我只是坚持迭代文件。我得到了#34;混合迭代和读取方法会丢失数据"我尝试时出错:
for line in file:
user_input = file.readlines()
这样做我只能读到最后一行:
for line in user:
user_input = line
那么我该如何阅读文件中的每一行?我觉得这将是一个重复的问题,但我不知道如何解决这个问题。
答案 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()
换句话说,对于文件中的每一行,您都在尝试读取整个文件。这没有任何意义。要么对每一行做一些事情,要么只读一遍整个文件。