我正在尝试使用'izip'从两个文件中同时读取行,但是出现如下错误:

>>> f1=open('/home/xug/scratch/test/test_1.fastq','r')
>>> f2=open('/home/xug/scratch/test/test_2.fastq','r')
>>> from itertools import izip
>>> for i,line1,line2 in izip(f1,f2):
...     if i%4==3:
...        print line1,line2
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack


我不知道为什么。...“需要两个以上的值”是什么?
谢谢

最佳答案

izip()只需将两个可迭代对象压缩成对。正如您期望的那样,它没有引入其他计数器。尝试使用enumerate()

for i, (line1, line2) in enumerate(izip(f1, f2)):
    ...


还可以得到那个计数器。

该错误消息是由于尝试将可迭代项的第一项分配给i, line1, line2而产生的。由于第一项是一对字符串,例如s1s2,因此此分配实质上等于

i, line1, line2 = s1, s2


这显然需要两个以上的值才能解包。 (确切地说,它需要三个。)

10-06 12:31