2014-07-08 2 views
3

큰 텍스트 파일의 각 줄을 읽고 각 줄을 이름이 essay.txt 인 별도의 파일로 저장하는 프로그램을 작성하고 있습니다. 즉, 첫 번째 줄은 essay1.txt, 두 번째 줄은 essay2.txt 등으로 저장해야합니다. 문서에서 한 줄만 저장하는 대신 여러 줄을 저장하는 것 외에는 모두 잘 작동합니다. 여기 파일에서 읽은 각 줄을 다른 파일로 저장

내 코드입니다 :

filename = r'/Users/d-sdf/test_erick/test/essays.csv' 
f = open(filename) 

a =1 
line = f.readline() 
while line: 
    txtfile = open ("essay"+str(a)+".txt", 'w') # here I save each line as a file 
    a += 1 # This variable will change the file number 
    txtfile.write(line) 
    line = f.readline() 
    txtfile.close() 

f.close() 
+0

, 그것은 새 텍스트 파일의 첫 번째 줄에 – heinst

답변

1

는 C처럼 당신은이 글을 쓰는거야하지만 파이썬의 파일 API는 훨씬 간단, 많은 경우 : csv 모듈

with open('/Users/d-sdf/test_erick/test/essays.csv') as csvfile: 
    for i, line in enumerate(csvfile): 
     with open("essay{}.txt".format(str(i+1)), "w") as txtfile: 
      txtfile.write(line) 
+0

덕분에 많이 선을 썼다. 정말 도움이되었습니다. – danilo

0

사용 항상 with를 사용을 컨텍스트 프로세서를 사용하여 사물을 단순화합니다. 수동으로 파일을 닫을 필요는 없습니다. csv의 줄이 개행 문자로 구분되지 않았기 때문에 코드가 한 줄 대신 전체 파일을 읽는 이유가있을 수 있습니다. 필요한 경우 다른 모드로 열어보십시오. 난 그냥 파이썬 2.7.6에 코드를 시도하고 나를 위해 잘 작동

import csv 

filename = r'/Users/d-sdf/test_erick/test/essays.csv' 

with open(filename, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    i = 1 
    for row in reader: 
     with open("essay"+str(i)+".txt", 'w') as f: 
      f.write(row) 
     i+=1 
관련 문제