Как я могу удалить каждую вторую строку в очень большом текстовом файле?

#python-3.x #text #edit

#python-3.x #текст #Редактировать

Вопрос:

У меня очень большой текстовый файл, и я хочу удалить каждую вторую строку. Как я могу сделать это эффективным способом?

Я написал код, подобный этому:

 _file = open("merged_DGM.txt", "r")
text = _file.readlines()
for i, j in enumerate(text):
    if i % 2 == 0:
       del text[i]

 _file.close()
 _file = open("half_DGM.txt", "w")
 for i in text:
    _file.write(i)

_file.close()
  

Это работает для небольших текстовых файлов. но для больших файлов он загружает весь текст в переменную. Через 10 минут это не смогло решить проблему.

Любые предложения будут оценены.

Ответ №1:

Файловый объект, возвращаемый open iherits из ввода-вывода.IOBase и может быть повторен. Выполняя прямую итерацию по файлу, вы избегаете загрузки всего файла в память сразу.

 with open("merged_DGM.txt", "r") as in_file and open("half_DGM.txt", "w") as out_file:
    for index, line in enumerate(in_file):
        if index % 2:
            out_file.write(line)