2013-06-12 44 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

相關問題