читайте и запишите на том же файле CSV

Я пытаюсь читать и записать на том же файле CSV:

file1 = open(file.csv, 'rb')
file2 = open(file.csv, 'wb')
reader = csv.reader(file1)
writer = csv.writer(file2)
for row in reader:
   if row[2] == 'Test':
      writer.writerow( row[0], row[1], 'Somevalue')

Мои файлы CSV:

  • val1,2323,Notest
  • val2, 2323,Test

Так в основном, если мой row[2] значение Test Я хочу заменить его Some new value. Вышеупомянутый код дает мне пустые файлы CSV.

24
задан wxs 19 April 2013 в 22:37
поделиться

2 ответа

Вы должны использовать другое имя выходного файла. Даже если вы хотите, чтобы имя было таким же, вы должны использовать какое-то временное имя и, наконец, переименовать файл.

Когда вы открываете файл в режиме 'w' (или 'wb'), этот файл "очищается" - все содержимое файла исчезает. В документации Python для open () сказано:

... 'w' только для записи (существующий файл с таким же именем будет удален), ...

Итак, ваш файл будет удален прежде, чем функции csv начнут его анализировать.

18
ответ дан 29 November 2019 в 00:01
поделиться

Если ваш CSV-файл недостаточно велик (чтобы взорвать память), прочтите его все в память и закройте файл, прежде чем открывать его. в режиме записи.

Или вам следует подумать о записи в новый файл, а не в тот же.

4
ответ дан 29 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: