2014-01-20 3 views
1

파이썬에 대한 읽기 문제가 있습니다. 나는이 프로그램의파이썬 : 부분 텍스트 파일 읽기

부분은 그처럼 보이는 ... 그 사업에 새로운 해요 :

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 

참고가 lines[k + 1]에 액세스하기 전에 k < len(lines) - 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