所以我一直收到这个错误:
ValueError:混合迭代和读取方法会丢失数据
并且1)我不太明白为什么我会收到它,2)有类似问题的人似乎在用他们的代码做事情比初学者(比如我自己)复杂得多可以适应。
我的代码的想法是读取data_file.txt并将每一行转换为它自己的单独数组。
到目前为止,我有这个:raw_unicode_escape
我一直在收到错误。
上面的问题似乎做了类似的事情,调用数组的项目,但是他的代码是跳过行并使用范围调用它的某些部分,我不需要它。我只需要调用所有行并将它们组成一个数组。
Python: Mixing files and loops
在这个问题中,再次提出了一些比我能理解得更多的东西。根据我的理解,他只想要一个在错误发生后重新启动的代码,并且答案是关于该部分的。再一次不是我想要的。
答案 0 :(得分:2)
创建文件行的数组,每个数组元素一行:
with open('file.txt','r') as input_file:
array = input_file.readlines()
return array
因为readlines
会一次性为您提供整个文件。或者,
return list(open('file.txt','r'))
将按the docs执行相同操作。
答案 1 :(得分:2)
错误几乎是不言自明的(一旦你知道它是什么),所以这里就是。
您从循环for line in input_file:
开始。文件对象可以在Python中迭代。它们遍历文件中的行。这意味着对于循环的每次迭代,line
将包含文件中的下一行。
接下来,您手动阅读一行line = input_file.readlines()
。这会尝试从文件中读取一行,但您已经在for循环中迭代了这些行。
文件通常按顺序读取,不会倒退。你最终得到的是一场冲突。如果使用readline
读取一行,则循环中的迭代器将被强制在下一行之后返回该行,因为它无法返回。但是,有希望返回下一行。该错误告诉您readline
知道有一个活动的迭代器,并且调用它会干扰循环。
如果您取出line = input_file.readlines()
,循环将按照您的预期进行。