for z in range(1,n+1):
with open("file_{}.bin".format(z), "rb") as file:
for byte in file:
for bit in byte:
if bit=='0':
s0+=1
else:
s1+=1
break
我使用break来停止循环for byte in file:
以读取下一个文件中的相同位置并递增它但它只返回一个循环
我想对多个文件中的每个位置计数0, 示例:
file_0.bin包含
10110000
file_1.bin包含
11101010
位置0的输出将为:0
位置1的输出将为:1
位置7的输出为:2
有什么想法吗? 提前致谢
答案 0 :(得分:0)
您可以使用collections.Counter
,其目的仅限于此 - 充当计数器。您可以使用enumerate
在增量时跟踪索引。
from collections import Counter
c = Counter()
for z in range(1, n + 1):
with open("file_{}.bin".format(z), "r") as file:
for byte in file:
for i, bit in enumerate(byte.strip()):
c[i] += (1 - int(bit))
print(c)
这比在内存中存储多个变量更简洁。
如果文件中只有一个字节字符串,则解决方案会简化:
with open("file_{}.bin".format(z), "r") as file:
byte = file.read().strip()
for i, bit in enumerate(byte):
c[i] += (1 - int(bit))