Вместо того, чтобы читать весь список в память, переберите входной файл и запишите все строки , за исключением строки, которую необходимо удалить, в новый файл. Используйте enumerate()
, чтобы сохранить счетчик, если вам нужно удалить по индексу:
row_to_delete = 101068
filename = "EKBE_0_20180907_065907 - Copy.csv"
with open(filename, 'r', encoding='utf8', errors='ignore') as inputfile,\
open(filename + '.fixed', 'wb', encoding="utf8") as outputfile:
for index, line in enumerate(inputfile):
if index == row_to_delete:
continue # don't write the line that matches
outputfile.writeline(line)
Вместо того, чтобы использовать индекс, вы могли бы даже таким образом обнаружить плохую строку в коде.
Обратите внимание, что это записывает в новый файл с тем же именем, но с добавленным .fixed
.
Вы можете переместить этот файл обратно, чтобы заменить старый файл, если хотите, на os.rename()
, как только вы закончили копировать все, кроме плохой строки:
os.rename(filename + '.fixed', filename)