小编典典

混合文件和循环

python

我正在编写一个脚本,该脚本记录来自另一个程序的错误,并在遇到错误时从中断的地方重新启动该程序。不管出于什么原因,该程序的开发人员都没有必要默认将此功能放入其程序中。

无论如何,程序都会获取一个输入文件,对其进行解析,然后创建一个输出文件。输入文件采用特定格式:

UI - 26474845
TI - the title (can be any number of lines)
AB - the abstract (can also be any number of lines)

当程序引发错误时,它会为您提供跟踪错误所需的参考信息-
即UI,哪个部分(标题或摘要)以及相对于标题或摘要开头的行号。我想使用输入参考编号和文件,找到句子并将其记录的函数记录输入文件中令人讨厌的句子。我能想到的最好方法是在文件中向前移动特定的次数(即n次,其中n是相对于开始部分的行号)。这样做似乎很有意义:

i = 1
while i <= lineNumber:
    print original.readline()
    i += 1

我不知道这怎么会使我丢失数据,但是Python认为会这样,并说ValueError: Mixing iteration and read methods would lose data。有人知道如何正确执行此操作吗?


阅读 165

收藏
2020-12-20

共1个答案

小编典典

你得到了ValueError异常,因为你的代码可能有for line in original:除了original.readline()。一个正在解决问题而又不降低程序速度或消耗更多内存的简单解决方案正在发生变化

for line in original:
    ...

while True:
    line = original.readline()
    if not line: break
    ...
2020-12-20