使用izip在python中同时读取两个文件中的行

时间:2011-12-11 00:59:48

标签: python line

我正在尝试使用'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

1 个答案:

答案 0 :(得分:7)

izip()只需将两个iterables拉成对。正如您所期望的那样,它不会引入额外的计数器。尝试使用enumerate()

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

也得到那个柜台。

尝试将您的iterable的第一项分配给i, line1, line2,从而产生错误消息。由于第一项是一对字符串,例如s1s2,因此此分配基本上等同于

i, line1, line2 = s1, s2

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