読者です 読者をやめる 読者になる 読者になる

IPアドレスを扱うには?

Python

 PythonIPアドレス関連の処理を行うライブラリを探しているのですが、いまいち確信がもてません。僕がやりたいことに一番近いのは、IPyのようです。

IPy
http://software.inl.fr/trac/trac.cgi/wiki/IPy


 何がやりたいかというと、次のような処理です。

>>> from IPy import IP
>>> IP('210.153.84.0/24')
IP('210.153.84.0/24')
>>> ip = IP('210.153.84.0/24')
>>> IP('210.153.84.15') in ip 
True
>>> IP('210.153.83.15') in ip 
False


 IPyはバージョン1.0を名乗っていないものの、開発ステータスをStableにしており、メンテナンスもきちんと行われているので、信頼してもよさそうに見えます。


 確信が持てないという理由は、やりたいことが「あるIPアドレスが、指定されたアドレスの範囲内にあるかどうかを判定する」ということなのに、アドレスが、

Allow from 210.153.84.0/24
Allow from 210.136.161.0/24
...

のように増えていった場合、このIPyを使って愚直に実装した場合、効率が悪くなると思われるからです。


 こういう場合はTrieを使うのが定石だと思うのですが、なかなかPythonでの実装が見つかりません。


 よい方法をご存知の方がいらしたら、是非教えてください!