#python #csv
#python #csv
Вопрос:
У меня есть файл csv со следующим содержимым
1,2,3,4
a,b,c,d
w,x,y,z
И я хочу обновить содержимое этого файла csv до
1,2,3,4
a,b,c,d,k
w,x,y,z
Может ли кто-нибудь поделиться кодом Python для этого процесса обновления??
Ответ №1:
Используя библиотеку csv, мы считываем данные, преобразуем их в список списков, добавляем k в соответствующий список, затем записываем его снова.
import csv
data = csv.reader(open("input.csv"))
l = list(data)
l[1].append("k")
our_writer = csv.writer(open("output.csv", "wb"))
our_writer.writerows(l)
Хотя библиотека csv не является полностью необходимой для вашего игрушечного случая, часто полезно использовать хорошо масштабируемый подход.
Комментарии:
1. Для обобщения вы можете найти
with
инструкцию, полезную для правильного закрытия файлов. Чтобы обновить файл на месте, вы можете записать во временный файл и переименовать его в случае успеха. Вы должны использовать'wb'
mode для выходного файла. Если вы загружаете все строки в память, этоwriter.writerows()
позволяет вам записывать все строки одновременно.
Ответ №2:
Вам не нужно csv
для такого простого случая:
# sed '2s/$/,k/'
import fileinput
for lineno, line in enumerate(fileinput.input(inplace=True), start=1):
if lineno == 2:
line = line.rstrip('n') ",kn"
print line,
Пример:
$ python update_2nd_line.py data_to_update.csv
Он обновляет data_to_update.csv
файл на месте.