2017-04-23 2 views
1

아래의 의사를보고하십시오 루프에서 여러 CSV를 쓰기 위해 작동하지 다른 파일에 파일을 쓰는 것 def()writer.writerow는

그러나 이것은 작동하지 않으며 파일은 비어 있습니다.

내가하려고하면

main()를 사용하여 제거 또는 for loop 중지하세요 : 그것은 작동합니다

writer = csv.writer(open(filename, 'wt', encoding = 'utf-8')) 
     ... 
FUNCTION (query) 
def FUNCTION(query): 
     ... 
    writer.writerow(XXX) 

.

이유를 모르겠습니까? for loop 또는 main()과 관련된 것이 있습니까?

답변

1

간단한 수정은 파일 핸들을 FUNCTION으로 전달하는 것입니다. 파일이 주에 오픈되어 있기 때문에, 당신은 파일이 너무 처리

def FUNCTION(writer):

-FUNCTION(writer)에 대한 호출과 정의를 변경, 서브 루틴에서 원하는/이름이 필요하지 않습니다 어디서나 writer.writerow(xxx)를 사용 서브 루틴에서 출력을 스트리밍해야합니다.

참고 : 예에서 파일 포인터의 이름을 writer에서 write으로 변경했습니다.

+0

마술처럼 작동합니다! 이것은 나를위한 멋진 교훈이다 파일 핸들을 전달하는 법을 배워라! – user815408

0

가능한 이유는 파일 포인터를 닫지 않았기 때문입니다. 다음과 같이 컨텍스트 관리자를 사용할 수 있습니다.

with open(filename, 'wt', encoding = 'utf-8') as f: 
    writer = csv.writer(f) 
    ... 
    FUNCTION (query) 

자동 닫기 파일을 사용하는 데 도움이됩니다.

+0

아니요, 아직 작동하지 않습니다 ... – user815408