Запись в CSV из списка, write.row, кажется, останавливается в странном месте

Я пытаюсь объединить несколько CSV-файлов. Моя первоначальная функция направлена ​​на:

  • Посмотрите внутри каталога и подсчитайте количество файлов внутри (предположим, что все они .csv)
  • Откройте первый CSV и добавьте каждую строку в список
  • Закрепите верхние три строки (есть некоторая бесполезная информация заголовка столбца, которую я не хочу)
  • Сохраните эти результаты в списке, который я назвал «архивом»
  • Откройте следующий CSV-файл и повторите (клип и добавьте em в «архив»)
  • Когда мы отсутствуем в файлах CSV, я хотел записать полный «архив» в файл в отдельной папке.

Так, например, если я начну с трех файлов CSV, которые выглядят примерно так.

CSV 1

[] [['Title'],['Date'],['etc']] [] [['Spam'],['01/01/2013'],['Spam is the spammiest spam']] [['Ham'],['01/04/2013'],['ham is ok']] [['Lamb'],['04/01/2013'],['Welsh like lamb']] [['Sam'],['01/12/2013'],["Sam doesn't taste as good and the last three"]] 

CSV 2

 [] [['Title'],['Date'],['etc']] [] [['Dolphin'],['01/01/2013'],['People might get angry if you eat it']] [['Bear'],['01/04/2013'],['Best of Luck']] и [] [['Title'],['Date'],['etc']] [] [['Dolphin'],['01/01/2013'],['People might get angry if you eat it']] [['Bear'],['01/04/2013'],['Best of Luck']] 

CSV 3

 [] [['Title'],['Date'],['etc']] [] [['Spinach'],['04/01/2013'],['Spinach has lots of iron']] [['Melon'],['02/06/2013'],['Not a big fan of melon']] и [] [['Title'],['Date'],['etc']] [] [['Spinach'],['04/01/2013'],['Spinach has lots of iron']] [['Melon'],['02/06/2013'],['Not a big fan of melon']] 

В конце концов, я бы хотел получить что-то вроде …

CSV OUTPUT

 [['Spam'],['01/01/2013'],['Spam is the spammiest spam']] [['Ham'],['01/04/2013'],['ham is ok']] [['Lamb'],['04/01/2013'],['Welsh like lamb']] [['Sam'],['01/12/2013'],["Sam doesn't taste as good and the last three"]] [['Dolphin'],['01/01/2013'],['People might get angry if you eat it']] [['Bear'],['01/04/2013'],['Best of Luck']] [['Spinach'],['04/01/2013'],['Spinach has lots of iron']] [['Melon'],['02/06/2013'],['Not a big fan of melon']] 

Итак … Я начал писать это:

 import os import csv path = './Path/further/into/file/structure' directory_list = os.listdir(path) directory_list.sort() archive = [] for file_name in directory_list: temp_storage = [] path_to = path + '/' + file_name file_data = open(path_to, 'r') file_CSV = csv.reader(file_data) for row in file_CSV: temp_storage.append(row) for row in temp_storage[3:-1]: archive.append(row) archive_file = open("./Path/elsewhere/in/file/structure/archive.csv", 'wb') wr = csv.writer(archive_file) for row in range(len(archive)): lastrow = row wr.writerow(archive[row]) print row 

Кажется, это работает … за исключением случаев, когда я проверяю свой выходной файл, кажется, что он прекратил писать в странной точке ближе к концу "

например:

 [['Spam'],['01/01/2013'],['Spam is the spammiest spam']] [['Ham'],['01/04/2013'],['ham is ok']] [['Lamb'],['04/01/2013'],['Welsh like lamb']] [['Sam'],['01/12/2013'],['Sam doesn't taste as good and the last three']] [['Dolphin],['01/01/2013'],['People might get angry if you eat it']] [['Bear'],['01/04/2013'],['Best of Luck']] [['Spinach'],['04/0 

Это действительно странно, я не могу понять, что случилось. Казалось, что написано хорошо, но решили остановиться даже на полпути через запись в списке. Отслеживая его, я уверен, что это связано с моей последней записью «for loop», но я не слишком хорошо знаком с методами csv. У вас есть прочтение документации, и я все еще в тупике.

Может ли кто-нибудь указать, где я ошибся, как я могу это исправить, и, возможно, если будет лучший способ обойти все это!

Много спасибо -Huw

One Solution collect form web for “Запись в CSV из списка, write.row, кажется, останавливается в странном месте”

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

Использование синтаксиса with open(...) as f полезно, потому что он закроет файл для вас, когда Python покинет с with -suite. С with , вы никогда не забудете закрыть файл снова.

 with open("./Path/elsewhere/in/file/structure/archive.csv", 'wb') as archive_file: wr = csv.writer(archive_file) for row in archive: wr.writerow(row) print row 
  • Pandas to_csv вызывает запятую
  • Как добавить новый список в существующий файл CSV?
  • Представляете иерархию деревьев с использованием электронной таблицы Excel, которая легко анализируется с помощью Python CSV-читателя?
  • условная строка, читаемая csv в пандах
  • Печать различной точности по столбцу с помощью pandas.DataFrame.to_csv ()?
  • Фильтровать RDD на основе row_number
  • Можно ли импортировать CSV-файл и автоматически вывести разделитель?
  • Написание CSV из фляжной рамки
  • Python - лучший язык программирования в мире.