我在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行而不是第+行,就像我在控制台命令上打印得到的那样。
有没有人知道发生了什么?任何提示将非常感谢!
谢谢大家。
亲切,
费尔南达科斯塔
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"))
您是否尝试创建变量并在此变量中传递next(foo)的值,最后打印变量?
我刚刚意识到当你在python 3中调用next()命令时它正确地读取了行+ 1,当我再次调用它时,它会考虑下一行(行)而不是行,所以它打印下一行(下一行(行)是行+ 2!
所以我只需在控制台命令行中删除打印即可修复它。
谢谢大家,对noob问题感到抱歉!