2013-04-25 2 views
1

하나의 텍스트 문서에서 일련의 줄을 가져 와서 한 번에 역순으로 입력하고 싶습니다. 예를 들어 텍스트 문서 A가 포함파이썬에서 역순으로 입력 파일에서 출력 파일로 행을 쓰는 방법 3

hi 
there 
people 

을 그래서 그러므로 나는이 같은 제외하고, 텍스트 문서 나에게이 같은 라인을 쓰고 싶은 것 :

people 
there 
hi 

를 지금까지 내가 가지고 :

def write_matching_lines(input_filename, output_filename): 
    infile = open(input_filename) 
    lines = infile.readlines() 
    outfile = open(output_filename, 'w') 
    for line in reversed(lines): 
      outfile.write(line.rstrip()) 
    infile.close() 
    outfile.close() 

하지만이 경우에만 반환됩니다 :

한 줄에. 어떤 도움을 주시면 감사하겠습니다.

+3

연결할에게 새로운 라인을 파일에 기록 할 때 : outfile.write (line.rstrip() + '\ R') – Abbas

+0

오 와우 내가 어떻게 놓치지 않았다 .. 감사합니다 아주 많이! –

답변

2

왜 글을 쓰기 전에 rstrip()을 사용합니까? 당신은 그것을 쓸 때 줄 바꿈의 끝에서 개행을 제거하고있다. 그럼에도 새 줄이 없다는 것을 알게됩니다. 쓰기에서 rstrip()을 제거하기 만하면됩니다.

덜 있습니다.

업데이트

내가 증명할 수 있다면/마지막 행이 종료 줄 바꿈이 있는지 확인은, 나는 개인적으로 정면, 중요 한 라인 엉망으로 기울어 될 것입니다. 예 :

print(line.rstrip(), file=f) 

새 줄을 추가 할 :

.... 
outfile = open(output_filename, 'w') 
lines[-1] = lines[-1].rstrip() + '\n' # make sure last line has a newline 
for line in reversed(lines): 
     outfile.write(line) 
.... 
+0

파일의 마지막 줄에 줄 바꿈이 없을 수도 있습니다. – jamylak

+0

잡기. 성가신 가정. :) 개인적으로, 나는 그 상황을 직접 다루는 것보다는, 존재하는 모든 개행 문자를 제거하고 바꿔야한다고 생각합니다. –

+0

나는 그것에 대해 생각했다. 그러나 나는 단지 1 개의 라이너가 아니라는 것을 확인하는 것이 더 실용적이라고 결정했다. 당신은 0 개 이상의 라인을 가지고 있고 2. 마지막 라인은 새로운 라인을 가지고있다. – jamylak

3

당신은 또는 당신이 동등하게 파이썬 3

print >>f, line.rstrip() 

을 사용할 수 있습니다, 당신을 위해하지 않습니다 .write 이후 + '\n' 필요 너를 위해서. 또는 같은 것을 할 :

>>> with open('text.txt') as fin, open('out.txt', 'w') as fout: 
     fout.writelines(reversed([line.rstrip() + '\n' for line in fin])) 

이 코드는 마지막 줄 바꿈이 있거나없는 경우는 그냥 사용할 수 있습니다 그것은 을하지 알고 있다면 당신이 모르는 가정

fout.writelines(reversed(fin.readlines())) 
0
with open(your_filename) as h: 
    print ''.join(reversed(h.readlines())) 

하거나, 다른 스트림에 기입 할 경우 :

with open(your_filename_out, 'w') as h_out: 
    with open(your_filename_in) as h_in: 
     h_out.write(''.join(reversed(h_in.readlines())) 
3

한 줄 것입니다 수행

open("out", "wb").writelines(reversed(open("in").readlines())) 
관련 문제