Skip to main content
 首页 » 编程设计

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

2025年05月04日14exmyth

我正在尝试使用“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 个值”? 谢谢

请您参考如下方法:

izip() 只是将两个可迭代对象压缩成对。它并没有像您预期的那样引入额外的计数器。尝试使用 enumerate()

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

也得到那个计数器。

错误消息源于尝试将可迭代对象的第一项分配给 i, line1, line2。由于第一项是一对字符串,比如 s1 和 s2,这个赋值本质上等同于

i, line1, line2 = s1, s2 

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