2013-06-12 25 views
0

我有一个文件,然后打开它,然后检查几件事情。如果该行以“E PARAM”开头,并且在某处还有“OOPS1”,那么我想检查下一行是否以“E PARAM”开头。如果没有,我会创建一个新文件并将其复制到那里,直到我不打另一个“E PARAM”行。因为Python可是没有下一个()选项......有什么可以帮助我在这里如何在Python中访问文件(.txt)中的下一行

import string 
import os 


A = "k_trap_cur" 
B = open(A, 'r+') 
lines = B.readline() 

for lines in B: 
    if lines.startswith("E PRAM"): 
     if "OOPS: 1" in lines: 
      while lines.next().startswith("E PARAM") == False: // HERE I want to access next line 
       print " YES" 
+0

用'read()'读取文件并用“E PARAM”分割 –

+2

我的文件是一个包含大量行的大文件。在while循环中,我想检查下一行是否以(“E PARAM”)开头。我不必分割它 – Nick

+0

在循环中使用'next(B)'或'B.readline()'查看下一行 –

回答

0

如果我理解你的权利:

b = open(a, 'r+') 
for line in b: 
    if line.startswith("E PRAM") and "OOPS: 1" in line: 
     next_line = next(b) 
     # do whatever you need 

文件提供了所谓的“迭代器协议”,这就是为什么他们在for环境中工作。如果需要,您也可以手动调用next函数。查询PEP-234了解更多详情。

+0

@kirelagin ..非常感谢链接。我试着做你说的话,但它给了我一个错误。 CODE:在乙行: 如果lines.startswith( “PRAM EchoStar的”)和 “OOPS:1” 中的行: next_line =下一个(B) 打印next_line 错误:next_line =下一个(B) NameError:名称'next'未定义 – Nick

+0

: - 错误:next_line = next(B)NameError:名称'next'未定义 – Nick

+0

@Nick ['next'](http://docs.python.org/2/library/functions .html#next)是在Python 2.6中添加的,可能你的版本比较老。然后'next_line = next(b)'应该工作。 – kirelagin

相关问题