如何解决这个迭代和读取方法错误?

时间:2018-04-03 04:14:14

标签: python python-2.7 file-handling

for text in Horizontal_File:
    if text.find("THETA    PHI")!=-1:
    valueoftext = Horizontal_File.readline()
    SplitValue=valueoftext.split()
    phi_List_Horizontal.append(SplitValue[1])
    RCS_List_Horizontal.append(SplitValue[6])

它引发的错误是#34; ValueError:混合迭代和读取方法会丢失数据"

1 个答案:

答案 0 :(得分:3)

for text in Horizontal_File:
每次迭代循环时,

始终会获得下一行文件。

readline()也为每次调用获取下一行(在本例中为相同的)文件。

  1. 因此,文本将包含文件的第1行

  2. 如果您在文本中找到要搜索的内容,则valueoftext将采用文件的第2行

  3. 下一次循环调用将获得第3行,循环开始将永远不会出现第2行

  4. Python认为这是一个错误,因为通常你希望循环获取所有行,你写的内容通常是错误。

    如果情况确实如此,那么你必须做一个解决方法,以便python明白你的意思。在Python 2中,您可以使用valueoftext = Horizo​​ntal_File.next()并在Python 3中使用valueoftext = next(Horizo​​ntal_File)。但是,您应该确保在尝试获取下一行时没有到达文件末尾,否则您将收到StopIteration异常。