计算多个文件中每个位置的位数

时间:2017-09-25 00:25:54

标签: python file loops

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

有什么想法吗? 提前致谢

1 个答案:

答案 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))