Я пытаюсь читать и записать на том же файле 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.
Вы должны использовать другое имя выходного файла. Даже если вы хотите, чтобы имя было таким же, вы должны использовать какое-то временное имя и, наконец, переименовать файл.
Когда вы открываете файл в режиме 'w' (или 'wb'), этот файл "очищается" - все содержимое файла исчезает. В документации Python для open ()
сказано:
... 'w' только для записи (существующий файл с таким же именем будет удален), ...
Итак, ваш файл будет удален прежде, чем функции csv начнут его анализировать.
Если ваш CSV-файл недостаточно велик (чтобы взорвать память), прочтите его все в память и закройте файл, прежде чем открывать его. в режиме записи.
Или вам следует подумать о записи в новый файл, а не в тот же.