Нужна помощь в улучшении программы обработки текста (Python 3) - PullRequest
0 голосов
/ 24 августа 2018

Я написал программу на python для просмотра списка X-файлов, открытия каждого из них, чтения построчно и записи (добавления) в выходной файл.Поскольку эти файлы занимают несколько ГБ каждый, это занимает очень много времени.

Я ищу предложения по улучшению производительности этой программы ... У меня нет формального обучения CS, поэтому, скорее всего, я пропускаю "очевидное решение этой проблемы;Я провел некоторое исследование, но, опять же, мои ограниченные знания (и другие задачи с более высоким приоритетом) ограничивают мою способность реализовывать такие ... Это также мой первый пост о переполнении стека. Заранее спасибо.

for name in PR_files:
    with open(PR_path + name, 'r') as f:
        line = f.readline()
        while line:
            with open(PR_out_path, 'a') as g:
                g.write(line + '\n')
                line = f.readline()
    f.close()

Вышеупомянутая программа будет работать, но будет иметь пустую строку между каждой строкой в ​​выходном текстовом файле;это потому, что первая строка следующего файла начиналась с последней строки предыдущего файла (мое решение этой проблемы состояло в том, чтобы добавить '\ n' к каждой строке, записываемой в выходной файл. По этой причине я написал другой блокудалить все пустые строки в выходном файле (да, очень неэффективно, возможно, гораздо лучший способ сделать это)

# this removes all blank lines from out put file
with open(PR_out_path) as this, open(PR_out_path_fix, 'w') as that:
    for line in this:
        if not line.strip():
            continue
        that.write(line)

1 Ответ

0 голосов
/ 24 августа 2018

Почему вы хотите добавить его построчно?А как насчет добавления всего файла вместо этого, как это?

with open(PR_out_path, 'a') as g:
    for name in PR_files:
        with open(PR_path + name, 'r') as f:
            g.write(f.read())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...