Sobrescribiendo una fila específica en un archivo csv usando el módulo CSV de Python

Estoy usando el módulo csv de Python para leer y escribir archivos csv.

Tengo una buena lectura y la adición a la multa de csv, pero quiero poder sobrescribir una fila específica en el csv.

Para referencia, aquí está mi lectura y luego escribir código para anexar:

#reading b = open("bottles.csv", "rb") bottles = csv.reader(b) bottle_list = [] bottle_list.extend(bottles) b.close() #appending b=open('bottles.csv','a') writer = csv.writer(b) writer.writerow([bottle,emptyButtonCount,100, img]) b.close() 

Y estoy usando básicamente lo mismo para el modo de sobrescritura (que no es correcto, simplemente sobrescribe todo el archivo csv):

  b=open('bottles.csv','wb') writer = csv.writer(b) writer.writerow([bottle,btlnum,100,img]) b.close() 

En el segundo caso, ¿cómo le digo a Python que necesito que se sobrescriba una fila específica? He rastreado Gogle y otras publicaciones de stackoverflow en vano. Asumo que mi conocimiento limitado de progtwigción es el culpable en lugar de Google.

Agregaré a Steven Respuesta:

 import csv bottle_list = [] # Read all data from the csv file. with open('a.csv', 'rb') as b: bottles = csv.reader(b) bottle_list.extend(bottles) # data to override in the format {line_num_to_override:data_to_write}. line_to_override = {1:['e', 'c', 'd'] } # Write data to the csv file and replace the lines in the line_to_override dict. with open('a.csv', 'wb') as b: writer = csv.writer(b) for line, row in enumerate(bottle_list): data = line_to_override.get(line, row) writer.writerow(data) 

No puede sobrescribir una sola fila en el archivo CSV. Tendrá que escribir todas las filas que desee en un archivo nuevo y luego cambiar su nombre al nombre del archivo original.

Su patrón de uso puede adaptarse a una base de datos mejor que un archivo CSV. Busque en el módulo sqlite3 para una base de datos ligera.