我正在尝试使用'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
我不知道为什么......什么是“需要超过2个值”? THX
答案 0 :(得分:7)
izip()
只需将两个iterables拉成对。正如您所期望的那样,它不会引入额外的计数器。尝试使用enumerate()
for i, (line1, line2) in enumerate(izip(f1, f2)):
...
也得到那个柜台。
尝试将您的iterable的第一项分配给i, line1, line2
,从而产生错误消息。由于第一项是一对字符串,例如s1
和s2
,因此此分配基本上等同于
i, line1, line2 = s1, s2
显然需要两个以上的值来解包。 (确切地说,它需要三个。)