проблемы при печати next () в Python 3 - PullRequest
1 голос
/ 09 марта 2019

У меня странная проблема с командой print (next ()) в python 3.

Когда я использую ее для печати на консоли, она работает отлично, но когда я пытаюсь сохранитьвывод в файл, это не работает!Команды, которые я использую, следующие:

for item in final:
    fasta = open(fname) # fname is the name if input file
    for line in fasta:
        line = line.strip()
        if item in line:
            item = item.strip()
            print('Line:', line, '\nNext line:', next(fasta)) # this works perfectly!
            print(line, next(fasta), file=open('finalList.fa', "a")) # this one doesn't work!

Вывод, который я получаю из части next (fasta) последней команды, это строка + 2 вместо line + 1 , как тот, который я получаю из команды print на консоли.

Кто-нибудь знает, что происходит?Любой совет будет очень признателен!

Спасибо всем заранее.

Сердечно,

Фернанда Коста

Ответы [ 3 ]

2 голосов
/ 09 марта 2019

Вызов next продвигает данный итератор (fasta в этом случае).Многократный вызов приведет к многократному продвижению и приведет к пропуску элементов.Вам нужно сохранить возвращаемое значение в переменной, если вы хотите использовать данные в разных местах:

if item in line:
    data = next(fasta) # Save it here
    item = item.strip()
    print('Line:', line, '\nNext line:', data) # Then use it multiple times here and below
    print(line, data, file=open('finalList.fa', "a"))
1 голос
/ 09 марта 2019

Я только что понял, что когда вы вызываете команду next () в Python 3, она правильно читает строку + 1, и когда я снова ее вызываю, она будет рассматривать строку следующую (строку) вместо строка, поэтому она печатает следующую (следующую (строку), которая является строкой + 2!

Так что я исправил это, просто удалив печать в командной строке консоли.

Спасибо всем и извините за проблему с нубами!

1 голос
/ 09 марта 2019

Вы пытались создать переменную и передать значение next (foo) в эту переменную и, наконец, вывести переменную?

...