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

发布于 2024-12-20 14:42:20 字数 506 浏览 0 评论 0原文

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

I'm trying to use 'izip' to read lines simultaneously from two files, however got errors like below:

>>> 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

I don't know why....what is "need more than 2 values"?
thx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雪花飘飘的天空 2024-12-27 14:42:20

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

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

来获取该计数器。

该错误消息是由于尝试将可迭代的第一项分配给 i, line1, line2 导致的。由于第一项是一对字符串,例如 s1s2,因此此分配本质上相当于

i, line1, line2 = s1, s2

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

izip() simply zips the two iterables to pairs. It doesn't introduce an additional counter, as you seem to expect. Try using enumerate()

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

to also get that counter.

The error message results from the attempt to assign the first item of your iterable to i, line1, line2. Since the first item is a pair of strings, say s1 and s2, this assignment would be essentially equivalent to

i, line1, line2 = s1, s2

which would clearly needs more than two values to unpack. (To be precise, it would need three.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文