gpt4 book ai didi

python - 尝试检查行数是否相同;我正确使用 izip 吗?

转载 作者:行者123 更新时间:2023-12-01 04:34:23 25 4
gpt4 key购买 nike

我知道 izip 可以一次读取两个文件,但我不知道如何同时迭代这两个文件(或者这样做是否合理)。这是我的代码的第一步,该代码应该逐行读取文档并返回文档是否具有相同的行数:

from sys import argv  
import itertools
a = 0
b = 0
doc1 = open(argv[1],"r")
doc2 = open(argv[2],"r")
for lineA,lineB in itertools.izip(doc1,doc2):
a = a + 1
b = b + 1
if a/b == 1:
print "equal number of lines in docs"
else:
print "docs with different number of lines"

最佳答案

这里有一个简单的例子来演示为什么这不起作用:

>>> a = range(5)
>>> b = range(10)
>>> zip(a, b)
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)] # ...is that it?

zipitertools.izip 会截断最长的迭代,因此您总是会得出这两个文件长度相同的结论

相反,请使用 itertools.izip_longest ,这不会截断较长的文件:

>>> from itertools import izip_longest
>>> list(izip_longest(a, b))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (None, 5), (None, 6), (None, 7), (None, 8), (None, 9)]
# ^ default fillvalue

现在您可以检查例如if lineA is None: 检测文件何时用完。

关于python - 尝试检查行数是否相同;我正确使用 izip 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31991806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com