2017-01-11 1 views
3

나는 txt 파일을 가지고 있고, 새로운 파일명으로 fname을 가진 새로운 파일에 각 줄을 목록으로 저장하고 싶다. 그러나 출력이 저장되지 않습니다. 내가 뭘 놓치고 있니?줄 목록에 CSV 파일이 있습니까?

import csv 

with open('file.txt', 'rU') as csvfile: 
    reader = csv.reader(csvfile, delimiter='\t') 
    i = 1 
    for line in reader: 
     fname = line[0] + line[1] 
     #print fname 
     with open(fname, 'w') as out: 
      out.write(line) 
     i +=1 

답변

0

에 끝에서 두 번째 줄을 변경 목록을 쓸 수 없습니다

import csv 

with open('file.txt', 'rU') as csvfile, open(fname, 'w') as out: 
    reader = csv.reader(csvfile, delimiter='\t') 
    i = 1 
    for line in reader: 
     fname = line[0] + line[1] 
     out.write(line) 
+1

도움말 및 설명에 감사드립니다. – CCDMT

+0

당신을 진심으로 환영합니다. 'for ='루프에서'i = 0'과'i + = 1'을 더한 행을 수동으로 카운팅하는 대신에 다음과 같이 사용할 수 있습니다 :'for i, line in enumerate (reader) :' 자동으로 계산됩니다. – martineau

0

변경 :

with open(fname, 'w') as out: 
      out.write(line) 

사람 :

with open(fname, 'a') as out: 
     out.write(line) 

w 만 쓰기 위해 파일을 엽니 다. 파일이있는 경우 파일을 덮어 씁니다. 파일이 존재하지 않으면 새로운 파일을 작성합니다.

a 추가 할 파일을 엽니 다. 파일 포인터는 파일이있는 경우 파일의 끝에 있습니다. 즉, 파일이 추가 모드에 있습니다. 파일이 없으면 쓰기 용으로 새 파일을 작성합니다.

더 나은 방법 : 당신은 그래서 당신은, 당신이 두 가지를 수정해야 원하는 일을하기 위해 **out.write(str(line))**

import csv 

with open('file.txt', 'rU') as csvfile: 
    reader = csv.reader(csvfile, delimiter='\t') 
    i = 1 
    for line in reader: 
     fname = line[0] + line[1] 
     #print fname 
     with open(fname, 'w') as out: 
------> out.write(str(line)) 
     i +=1 
+0

파일의 각 줄을 목록으로 나눕니다.이 기능은 작동하지 않습니다. 목록을 작성할 수 없습니다. – racket99

-1

는, 사람은을 열 수 있습니다 추가 파일을 쓸 때마다 이전 내용이 지워지지 않도록 "추가"모드로 출력하십시오.

두 번째로 읽는 각 csv 행에 대해 파일의 원시 데이터를 알 수있는 방법이 필요합니다. csv 모듈과 같은 확장 프로그램을 사용하고 내부 용을 모르는 경우에는 어려울 수 있습니다 (어쨌든 사용하지 않아야 함).

이 경우이 문제를 해결하려면 csvfile 인수를 csv.reader에 전달하면 필요한 정보를 얻을 수 있습니다. 기본적으로 읽을 수있는 작은 전처리 기입니다. 이것이 의미하는 바입니다.

import csv 

def pre_reader(file): 
    """Generator that remembers last line read.""" 
    for line in file: 
     pre_reader.lastline = line 
     yield line 

with open('test_gen.csv', 'rU') as csvfile: 
    reader = csv.reader(pre_reader(csvfile), delimiter='\t') 
    i = 1 
    for line in reader: 
     fname = line[0] + line[1] 
     #print fname 
     with open(fname, 'a') as out: 
      out.write(pre_reader.lastline) 
     i +=1 
+0

왜 루프 내부에서 파일을 여는 중입니까? –