python - 混合文件和循环

标签 python python-2.7 file loops while-loop

我正在编写一个脚本,该脚本记录另一个程序的错误,并在遇到错误时重新启动程序。无论出于何种原因,该程序的开发人员认为没有必要默认将此功能放入他们的程序中。

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

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 will lost data。有谁知道如何正确执行此操作?

最佳答案

您收到 ValueError 是因为除了 original.readline() 之外,您的代码可能还有 for line in original:。一个简单的解决方案正在改变,它可以在不使程序变慢或消耗更多内存的情况下解决问题

for line in original:
    ...

while True:
    line = original.readline()
    if not line: break
    ...

关于python - 混合文件和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826493/

相关文章:

python - 使用 python 和 wkhtmltopdf 将 HTML 转为 PDF

python - 发送带有正文的 GET 请求

python list/dict 属性最佳实践

eclipse - Aptana文件差异?

python - 查找相似的数据并将它们放在单独的列表中

python - PyDeadObjectError 和状态栏

python-2.7 - 导入错误 : No module named moves

c - 为什么 ftell 打印 -1 作为文件指针的值?为什么 errno 打印出 "INVALID ARGUMENT"?

java - 相互检查文件是否有 "fraud"

python-2.7 - 如何从Python Luigi登录