在python 3中打印next()的问题

问题描述 投票:1回答:3

我在python 3中的命令print(next())遇到了一个奇怪的问题。

当我用它在控制台上打印时,它工作得很好,但是当我尝试将输出保存到文件中时,它不起作用!我正在使用的命令如下:

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!

我从上一个命令的下一个(fasta)部分得到的输出是第+ 2行而不是第+行,就像我在控制台命令上打印得到的那样。

有没有人知道发生了什么?任何提示将非常感谢!

谢谢大家。

亲切,

费尔南达科斯塔

python python-3.x printing next
3个回答
2
投票

Calling next advances the given iterator(在这种情况下是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
投票

您是否尝试创建变量并在此变量中传递next(foo)的值,最后打印变量?


1
投票

我刚刚意识到当你在python 3中调用next()命令时它正确地读取了行+ 1,当我再次调用它时,它会考虑下一行(行)而不是行,所以它打印下一行(下一行(行)是行+ 2!

所以我只需在控制台命令行中删除打印即可修复它。

谢谢大家,对noob问题感到抱歉!

© www.soinside.com 2019 - 2024. All rights reserved.