проблема ввода / вывода файла - PullRequest
0 голосов
/ 18 мая 2011

У меня проблемы с очень простой проблемой. Я пытаюсь удалить разрывы строк в файле и отправить вывод в новый файл. Это мой код:

infile = open('seq.txt', mode='r', encoding='utf-8')
lines = infile.readlines()
for line in lines:
    par = line.strip('\n')

outfile = open('seqpar.txt', mode='w', encoding='utf-8')
for line in lines:
    outfile.write(par)

Когда я запускаю приведенный выше код, содержимое выходного файла (seqpar.txt) полностью пустое. Я пытался найти учебники по вводу / выводу в Интернете, но я не могу найти какие-либо решения для аналогичной проблемы. У меня действительно есть проблемы с пониманием файлового ввода-вывода по некоторым причинам. Заранее спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

Другие ответы объясняют, что не так с вашим кодом.Вот более питонический способ делать то, что вы пытаетесь сделать:

with open('seq.txt', mode='r', encoding='utf-8') as infile:
    with open('seqpar.txt', mode='w', encoding='utf-8') as outfile:
        for line in infile:
            outfile.write(line.strip("\n"))
        # Or alternatively -- more efficient, but perhaps less pythonic:
        # outfile.write(infile.read().replace("\n", ""))
3 голосов
/ 18 мая 2011
par = line.strip('\n')

Это нигде не сохраняется, поэтому каждый прочитанный line заменяет предыдущий par. Ваша последняя строка во входном файле предположительно пуста, и эта последняя строка - все, что записывается в выходной файл, поэтому ничего не записывается в выходной файл - несколько раз, по одному разу для каждой строки в lines. Вам нужно добавить каждый line.strip('\n') к par, а не перезаписывать его.

2 голосов
/ 18 мая 2011

Проблема с вашим кодом в том, что ваш первый цикл for повторяется по каждой строке в файле, помещая его в переменную par, каждый раз переопределяя одну и ту же переменную со следующей строкой.

Как только цикл завершится, par будет содержать последнюю строку файла, а следующий цикл for запишет последнюю строку файла в новый файл, повторенный n раз, n - количество строк впервый файл.

Ниже приведен один из способов работы:

infile = open('seq.txt', mode='r', encoding='utf-8')
lines = infile.readlines()

outfile = open('seqpar.txt', mode='w', encoding='utf-8')
for line in lines:
    outfile.write(line.stripe('\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...