私は現在IPのリストが非常に多いですが、現実的に可能な限り減らそうとしています。 netaddrモジュールのcidr_merge()
メソッドを使用すると、私のリストが大幅に圧縮されることを期待しています。ただし、期待どおりに動作しているようには見えません。Python 3.5 netaddrがIPを正しくマージしていない
5.8.183.1
5.8.183.2
5.8.183.5
5.8.183.6
5.8.183.10
5.8.183.14
5.8.183.18
5.8.183.22
5.8.183.26
5.8.183.30
5.8.183.34
5.8.183.38
5.8.183.42
5.8.183.46
はにマージ::cidr_merge()
方法から5.8.183.0/26
私の実際の結果は以下のとおりです。
5.8.183.1/32
5.8.183.2/32
5.8.183.5/32
5.8.183.6/32
5.8.183.10/32
5.8.183.14/32
5.8.183.18/32
5.8.183.22/32
5.8.183.26/32
5.8.183.30/32
5.8.183.34/32
5.8.183.38/32
5.8.183.42/32
5.8.183.46/32
次のIPの私が示すように、それらをマージする期待を与え例えば
、
ここに私のコードです:
from netaddr import *
try:
with open('nodes', 'r') as in_file:
dat_ips = [IPNetwork(line) for line in in_file.read().splitlines()]
dat_merged_ips = cidr_merge(dat_ips)
with open('output.txt', 'w') as out_file:
for x in dat_merged_ips:
out_file.write(str(x) + '\n')
except IOError:
print('File error detected:')