私のコードは、テキストファイルからIPアドレスを地理的に見つけ出すように設計されています。私は最後のセクションで問題を抱えています。私は、コードを実行すると、私はmap_ip.updateラインからの苦情を取得する:私は読むためにcountry_name_by_addr()
を取得するにはどうすればよいPython:文字列のリストとしてIPアドレスのリストを渡す
['$ ip address']
['$ ip address']
['$ ip address']
:私はprint
文でトラブルシューティングを行うときsocket.error: illegal IP address string passed to inet_pton
は、私は次の形式を取得します適切な形式の各IPアドレス?私のIPアドレスは、個々のリストの文字列のリストとしてフォーマットされているようです。
# script that geo-locates IP addresses from a consolidated dictionary
import pygeoip
import itertools
import re
# initialize dictionary for IP addresses
count = {}
"""
This loop reads text file line-by-line and
returns one-to-one key:value pairs of IP addresses.
"""
with open('$short_logins.txt path') as f:
for cnt, line in enumerate(f):
ip = re.findall(r'[0-9]+(?:\.[0-9]+){3}', line)
count.update({cnt: ip})
cnt += 1
"""
This line consolidates unique IP addresses. Keys represent how
many times each unique IP address occurs in the text file.
"""
con_count = [(k, len(list(v))) for k, v in itertools.groupby(sorted(count.values)))]
"""
Country lookup:
This section passes each unique IP address from con_count
through country name database. These IP address are not required
to come from con_count.
"""
map_ip = {}
gi = pygeoip.GeoIP('$GeoIP.dat path')
for i in count.itervalues():
map_ip.update({i: gi.country_name_by_addr(i)})
print map_ip