【问题标题】:How to solve this iterations and read method errors?如何解决这种迭代和读取方法错误?
【发布时间】:2018-09-12 07:29:43
【问题描述】:
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])

它给我的错误是“ValueError:混合迭代和读取方法会丢失数据”

【问题讨论】:

  • 用正确的缩进格式化你的代码
  • 是的,它是类型错误!对代码有任何帮助吗?
  • 请显示完整的异常,而不是描述。 (它不可能同时是ValueErrorTypeError。)
  • 你的 if 块仍然没有缩进。

标签: python python-2.7 file-handling


【解决方案1】:
for text in Horizontal_File:

每次循环迭代总是获取下一行文件。

并且 readline() 还会为每次调用获取文件中的下一行(在这种情况下是相同的)。

  1. 所以文本将有文件的第 1 行

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

  3. 下一次循环调用将得到第 3 行,循环的开始永远不会看到第 2 行

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

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

【讨论】:

  • for text in Horizonal_File.readline(): 读取第一行并遍历其中的字符。 for text in Horizontal_File: 一次遍历文件一行。它们根本不是一回事。
  • @abarnert 谢谢你,你当然是对的;不知道发生了什么;改写了。
  • 很好的解释。可能还值得解释的是,他可能只想使用text,或者调用next(Horizontal_File) 而不是Horizontal_File.readline(),这取决于他想要做什么。
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
相关资源
最近更新 更多