csv writer оставляет пустой выходной файл при сбое скрипта python

У меня есть сценарий, который выполняет некоторый анализ файлов, а затем записывает результаты в файл CSV. В псевдокоде:

while (there are still files to analyze): 
  do_analysis
  writer.writerow({... lots of columns names and the analysis results data... })

Если сценарий завершится, данные действительно находятся в файле csv. Но если скрипт вылетает - файлы пустые. Но строка writer.writerow () вызывается после завершения анализа каждого файла, поэтому я ожидал получить данные в файле csv для всех файлов, которые были проанализированы до сбоя.

Что я делаю неправильно?


person Michael Stahl    schedule 13.07.2020    source источник
comment
Можете ли вы показать минимальный, полный, проверяемый пример, а не псевдокод? В противном случае воспроизвести вашу проблему будет практически невозможно.   -  person C.Nivs    schedule 14.07.2020


Ответы (1)


writerow не выполняет мгновенную запись в файл, большая часть записи выполняется при закрытии файла. Вы можете принудительно записать в файл с помощью

file.flush()

делайте это всякий раз, когда хотите сохранить свои записи в файл.

Для получения дополнительной информации https://www.tutorialspoint.com/python/file_flush.htm

person HackLab    schedule 13.07.2020
comment
Спасибо! Это сделало свою работу. Примечание для новичков вроде меня: файл csv был открыт следующим образом: с open (csvfilename, mode = 'w', newline = '') as csv_file: поэтому я использую: csv_file.flush () - person Michael Stahl; 14.07.2020