Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自并行文件的Python元组_Python_List_Loops_Tuples - Fatal编程技术网

来自并行文件的Python元组

来自并行文件的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,但现在我

我有两个文件,对于在一个文件中读取的每个字节,必须对另一个文件中相同位置的字节执行某些操作-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,但现在我开始怀疑它

欢迎指点

使用:

如果文件很大,您可能希望使用较小的块,而不是将整个文件读入内存

对于文本文件,只需直接在文件上循环即可生成行:

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