Пытаетесь выскрести из файла и записать очищенное содержимое в другой файл? - PullRequest
2 голосов
/ 02 апреля 2020

Предупреждение: я новичок в кодировании и приветствую любую конструктивную критику '[CHAT] [@]'). Затем я хочу записать выбранные данные в новый файл.

Это исключительно для практики кодирования

with open("/Users/barge/Desktop/Untitled.txt", "r") as logsfile:
    for line in logsfile:
        if "[CHAT] [@]" in line:
            print(line[44], end='')  

with open("newtestfile.txt", "w+") as newfile:
    for eline in newfile:
        newfile.write(line[44])

logsfile.close()
newpyfile.close()

Моя проблема: я не получаю никаких ошибок в терминале, но мой вывод Файл 'newtestfile.txt' пуст при каждом запуске. В строке 7 должны записываться все символы после 44-го индекса Untitled.txt, верно?

Спасибо.

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

open yields итератор (читать заметки) и line[44], больше не строка [44] , когда вы пытаетесь запишите его в файл.

Попробуйте вместо этого:

with open("/Users/barge/Desktop/Untitled.txt", "r") as logsfile, open("newtestfile.txt", "w+") as newfile:
    for line in logsfile:
        if "[CHAT] [@]" in line:
            print(line[44], end='')  # prints everything to the right of index[44] for each line
            newfile.write(line[44])

Примечания:

  • Понимание оператора Python с "*" 1019 *
  • with автоматически закрывает файл
  • open() на самом деле не дает iterator, но имеет подкласс io.TextIOBase (подробнее здесь ), называть его iterator - это упрощение процесса подчиненности для лучшего понимания.
  • Я не смог протестировать код.
0 голосов
/ 02 апреля 2020

Ваша проблема в том, что данные будут потеряны, как только выйдет ваш верхний l oop. Вы захотите, чтобы другой with открыл ваш выходной файл под вашим первым l oop, или откройте файл для записи (используя open() напрямую без with) и используйте его каждый l oop. Не забывайте грипп sh и закройте файл, как только вы закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...