복붙노트

[PYTHON] CSVWriter는 데이터를 쓰는 순간 데이터를 저장하지 않습니다.

PYTHON

CSVWriter는 데이터를 쓰는 순간 데이터를 저장하지 않습니다.

파이썬 초보자가 csv 모듈에 약간의 좌절감을 갖습니다. 이 속도로, 내가 파일 파서를 직접 작성한다면 더 쉬웠을 것이지만, 나는 Pythonic 방식으로 일을하고 싶다 ....

내 데이터를 CSV 파일에 저장해야하는 작은 파이썬 스크립트를 작성했습니다.

다음은 내 코드 스 니펫입니다.

import csv

wrtr = csv.writer(open('myfile.csv','wb'),delimiter=',', quotechar='"')

for row in rows:
    wrtr.writerow([row.field1,row.field2,row.field3])

myfile.csv 파일은 성공적으로 생성되었지만 아직 비어 있지만 파이썬 프로세스에서 여전히 사용되고있는 잠금 기능이 있습니다. 데이터가 메모리의 파일에 기록되었지만 아직 디스크로 플러시되지 않은 것 같습니다.

파이썬 프로세스가 파일 잠금을 유지하고 있기 때문에 잠금을 해제 할 책임이 있다고 가정합니다. 여기 내 질문은 다음과 같습니다.

해결법

  1. ==============================

    1.용도

    용도

    with open('myfile.csv','wb') as myfile:
        wrtr = csv.writer(myfile, delimiter=',', quotechar='"')
        for row in rows:
            wrtr.writerow([row.field1,row.field2,row.field3])
            myfile.flush() # whenever you want
    

    또는

    myfile = open('myfile.csv','wb')
    wrtr = csv.writer(myfile, delimiter=',', quotechar='"')
    for row in rows:
        wrtr.writerow([row.field1,row.field2,row.field3])
        myfile.flush() # whenever you want, and/or
    myfile.close() # when you're done.
    

    첫 번째 접근법에 대한 좋은 점은 파일이 예외 발생시 자동으로 올바르게 닫히게된다는 것입니다.

    파일 객체를 익명으로 만들려면 프로그램이 종료 될 때만 닫힙니다. 언제 플러시되는지 여부는 OS에 따라 다르므로 종료 할 때까지 결코 않을 수 있습니다.

  2. ==============================

    2.파일 객체의 flush () 및 close () 메서드입니다. 또는 함께 사용하십시오.

    파일 객체의 flush () 및 close () 메서드입니다. 또는 함께 사용하십시오.

  3. from https://stackoverflow.com/questions/3976711/csvwriter-not-saving-data-to-file-the-moment-i-write-it by cc-by-sa and MIT license