2014-01-20 197 views
1

我有一個與Python讀入問題。我是新的生意......Python:部分閱讀文本文件

該計劃的部分看起來像這樣:

for line in f.readlines(): 
    if ... : 
    print(line) 

是否有可能,不僅打印線,同時也是下一行? (即使它不履行,如果...)

我試了一下:

for k,line in enumerate(f.readlines()) 

但我不知道如何通過其編號打印線(K)

這個問題有沒有簡單的解決方法?

+0

待辦事項你的意思是你想打印第1,2行;然後2,3;然後是3,4,還是隻打印2組(即前1,2;然後3,4;然後5,6)? –

回答

0

你不需要將整個文件讀入內存中做到這一點:

prev = None 
for line in f: 
    if prev is None: 
     prev = line 
    else: 
     print prev + line 
     prev = line 
+0

感謝您的幫助。現在它工作:) – user3205790

2

存儲在一個變量行名單:

lines = f.readlines() 
for k, line in enumerate(lines): 
    # line   - current line 
    # lines[k + 1] - next line 

請注意,您應該檢查是否k < len(lines) - 1訪問lines[k + 1]之前。

上述方法以及您的原始方法要求將整個文件預先加載到內存中。如果你想節省一些內存,你可以讓你的循環讀取遞增文件中的行:

def iter_lines(f): 
    """Iterate over lines in f, providing the current and next line.""" 
    it = iter(f) 
    this_line = None 
    for this_line in it: 
     break # only get first line 
    else: 
     return # no lines in the file 
    for next_line in it: 
     yield this_line, next_line 
     this_line = next_line 
    yield this_line, None 

for line, next_line in iter_lines(f): 
    # line: current line 
    # next_line: next line, or None if at the last line 
+0

你太棒了。 現在一切正常。 非常感謝 – user3205790