来自并行文件的Python元组
我有两个文件,对于在一个文件中读取的每个字节,必须对另一个文件中相同位置的字节执行某些操作-Xor'ed表示 我希望我能有下面这样的东西,但到目前为止我没有运气:来自并行文件的Python元组,python,list,loops,tuples,Python,List,Loops,Tuples,我有两个文件,对于在一个文件中读取的每个字节,必须对另一个文件中相同位置的字节执行某些操作-Xor'ed表示 我希望我能有下面这样的东西,但到目前为止我没有运气: c = 0 f1 = list(file1.read()) f2 = list(file2.read()) for (a, b) in f1, f2: # set a and b for each byte in turn in f1 and f2 c = a ^ b 对我来说,这一点最初感觉很像Python,但现在我
c = 0
f1 = list(file1.read())
f2 = list(file2.read())
for (a, b) in f1, f2: # set a and b for each byte in turn in f1 and f2
c = a ^ b
对我来说,这一点最初感觉很像Python,但现在我开始怀疑它
欢迎指点 使用:
如果文件很大,您可能希望使用较小的块,而不是将整个文件读入内存
对于文本文件,只需直接在文件上循环即可生成行:
try:
from itertools import izip
except ImportError: # Python 3, use builtin zip
izip = zip
with file1, file2:
for line1, line2 in izip(file1, file2):
for a, b in izip(line1, line2):
在这里,我们使用(仅在Python 2中)来防止首先读取整个文件。这也假设线的长度相同
对于二进制文件,使用两个chunksize的幂读入块:
file1_it = iter(file1, lambda f: f.read(2048))
file2_it = iter(file2, lambda f: f.read(2048))
for chunk1, chunk2 in izip(file1_it, file2_it):
for a, b in izip(chunk1, chunk2):
使用:
如果文件很大,您可能希望使用较小的块,而不是将整个文件读入内存
对于文本文件,只需直接在文件上循环即可生成行:
try:
from itertools import izip
except ImportError: # Python 3, use builtin zip
izip = zip
with file1, file2:
for line1, line2 in izip(file1, file2):
for a, b in izip(line1, line2):
在这里,我们使用(仅在Python 2中)来防止首先读取整个文件。这也假设线的长度相同
对于二进制文件,使用两个chunksize的幂读入块:
file1_it = iter(file1, lambda f: f.read(2048))
file2_it = iter(file2, lambda f: f.read(2048))
for chunk1, chunk2 in izip(file1_it, file2_it):
for a, b in izip(chunk1, chunk2):
我想补充一点,izip不在python 3中的原因是,在python 3中,zip已经像izip一样工作了。@kazagistar:是的,我不想在python 2中屏蔽内置的
zip()
,因此选择将zip
重新绑定到izip
在python 3中,而不是相反,在Python 2中重新绑定izip
到zip
。我想补充一点,izip不在Python 3中的原因是因为在Python 3中,zip已经像izip一样工作了。@kazagistar:是的,我不想屏蔽Python 2中内置的zip()
,因此,在3中选择将zip
重新绑定到izip
,而不是在Python 2中选择将izip
重新绑定到zip
。