2017-06-19 24 views
0

我試圖用一個文件中讀取IP地址,並找出相應的該地址ip2location Python庫錯誤

import IP2Location; 
IP2LocObj = IP2Location.IP2Location(); 
IP2LocObj.open("data/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE.BIN"); 
#t=open('output.txt','w'); 
t=open('test_ip','r'); 
Line=t.readline(); 
While line: 
    rec = IP2LocObj.get_all(Line); 
    Line=t.readline(); 
    print rec.country_short 

誤差來這裏

Traceback (most recent call last): 
    File "myprogram.py", line 8, in <module> 
    rec = IP2LocObj.get_all(t); 
    File "/home/networkgroup/Downloads/IP2Location-Python-master/IP2Location.py", line 219, in get_all 
    return self._get_record(addr) 
    File "/home/networkgroup/Downloads/IP2Location-Python-master/IP2Location.py", line 364, in _get_record 
    ipv = self._parse_addr(ip) 
    File "/home/networkgroup/Downloads/IP2Location-Python-master/IP2Location.py", line 357, in _parse_addr 
    socket.inet_pton(socket.AF_INET, addr) 
TypeError: inet_pton() argument 2 must be string, not file 

此代碼是給錯誤的位置。您可以在這裏查看示例代碼http://www.ip2location.com/developers/python

+0

在回溯中,它表示'IP2LocObj.get_all(t)',而您的代碼沒有該行。相反,你有'rec = IP2LocObj.get_all(Line);'。回溯和代碼不同步。出錯後你改變了嗎? – kuro

回答

0

請嘗試下面的新Python代碼。

import IP2Location; 

IP2LocObj = IP2Location.IP2Location(); 
IP2LocObj.open("IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-SAMPLE.BIN"); # This is sample database 
with open('test_ip.txt') as f: # file containing ip addresses 
    for line_terminated in f: 
     line = line_terminated.rstrip('\r\n'); # strip newline 
     if line: # non-blank lines 
      print line 
      rec = IP2LocObj.get_all(line); 
      print rec.country_short