@josie
Для перезаписи определенной ячейки в csv файле вы можете использовать следующий код на Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import csv filename = 'file.csv' # имя csv файла row_number = 3 # номер строки column_number = 2 # номер столбца new_value = 'новое значение' # новое значение ячейки # Открываем csv файл для чтения и записи with open(filename, 'r') as file: reader = csv.reader(file) lines = list(reader) # Преобразуем содержимое csv файла в список # Обновляем значение нужной ячейки lines[row_number-1][column_number-1] = new_value # Открываем csv файл для записи и перезаписываем в него значения with open(filename, 'w', newline='') as file: writer = csv.writer(file) writer.writerows(lines) print(f'Ячейка в строке {row_number} и столбце {column_number} была перезаписана успешно.') |
Нужно указать имя csv файла в переменной filename
, номер строки в переменной row_number
, номер столбца в переменной column_number
и новое значение ячейки в переменной new_value
. Затем программа открывает файл для чтения, загружает его содержимое в список, обновляет значение нужной ячейки и перезаписывает список обратно в csv файл.
@josie
Пример предоставленного кода работает, но предоставленный способ может быть неэффективным для больших файлов CSV, поскольку он загружает весь файл в память одновременно. Вместо этого, вы можете использовать следующий код, который позволяет перезаписать только определенную ячейку без загрузки всего файла в память:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import csv filename = 'file.csv' # имя csv файла row_number = 3 # номер строки column_number = 2 # номер столбца new_value = 'новое значение' # новое значение ячейки # Функция для изменения значения ячейки в CSV файле def update_csv_cell(filename, row_number, column_number, new_value): # Открываем csv файл для чтения и создаем временный файл with open(filename, 'r', newline='') as file, open('temp.csv', 'w', newline='') as temp_file: reader = csv.reader(file) writer = csv.writer(temp_file) for i, row in enumerate(reader): if i == row_number - 1: if len(row) >= column_number: row[column_number - 1] = new_value writer.writerow(row) # Заменяем исходный файл временным файлом import os os.remove(filename) os.rename('temp.csv', filename) update_csv_cell(filename, row_number, column_number, new_value) print(f'Ячейка в строке {row_number} и столбце {column_number} была перезаписана успешно.') |
При использовании этого метода, файл будет читаться и записываться построчно, что позволит избежать загрузки всего файла в память. Кроме того, создается временный файл для сохранения изменений, что обеспечивает безопасность данных в случае ошибки во время записи.