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

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

Я написал такой код:

_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 Ответ

3 голосов
/ 18 марта 2019

Файловый объект возвращается открытым iherits из io.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)
...