我正在尝试使用'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
而产生的。由于第一项是一对字符串,例如s1
和s2
,因此此分配实质上等于i, line1, line2 = s1, s2
这显然需要两个以上的值才能解包。 (确切地说,它需要三个。)