У меня есть файл CSV, где диапазоны IP хранятся вместе с их landcode:Возвращаясь код страны IP-адрес
"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
"1.0.8.0","1.0.15.255","16779264","16781311","CN","China"
Это можно прочитать так:
range_start, range_stop, ignored, ignored, country_code, country_name
Когда пользователь запрашивает конкретный IP-адрес, я хочу вернуть ему код страны, соответствующий этому IP-адресу. Вот, например, 1.0.9.10
вернутся CN
для Китая, потому что между 1.0.8.0
и 1.0.15.255.
Я не знаю, как с этим справиться. Вот то, что я сделал до сих пор, но я сомневаюсь, что я нахожусь в правильном направлении:
import csv
with open("GeoIPCountryWhois.csv") as csvfile:
readCSV = csv.reader(csvfile, delimiter = ",")
IP_LOWs = []
IP_HIGHs = []
Land_CODEs = []
Lands = []
for row in readCSV:
IP_LOW = row[0]
IP_HIGH = row[1]
Land_CODE = row[4]
Land = row[5]
IP_LOWs.append(IP_LOW)
IP_HIGHs.append(IP_HIGH)
Land_CODEs.append(Land_CODE)
Lands.append(Land)
whatIP = input("What IP should be looked up? ")
codedex = IP_LOWs.index(whatIP)
landdex = Lands.index(whatIP)
IP_to_Code = Land_CODE[codedex]
IP_to_land = Land[landdex]
print(IP_to_Code)
print(IP_to_land)
Добавить блок отступа после 'с открытым (" GeoIPCountryWhois.csv ") как csvfile' :) –
Почему вы игнорируете столбцы 3 и 4? Это числовые эквиваленты начального и конечного IP. Вы должны преобразовать входной IP в число и сравнить их с этими диапазонами. См. Http://stackoverflow.com/questions/9590965/convert-an-ip-string-to-a-number-and-vice-versa – Barmar