Вот мои 3 цента ... Это демонстрирует явную сериализацию json для древовидного объекта python. Примечание. Если вам действительно нужен такой код, вы можете использовать класс twisted FilePath .
import json, sys, os
class File:
def __init__(self, path):
self.path = path
def isdir(self):
return os.path.isdir(self.path)
def isfile(self):
return os.path.isfile(self.path)
def children(self):
return [File(os.path.join(self.path, f))
for f in os.listdir(self.path)]
def getsize(self):
return os.path.getsize(self.path)
def getModificationTime(self):
return os.path.getmtime(self.path)
def _default(o):
d = {}
d['path'] = o.path
d['isFile'] = o.isfile()
d['isDir'] = o.isdir()
d['mtime'] = int(o.getModificationTime())
d['size'] = o.getsize() if o.isfile() else 0
if o.isdir(): d['children'] = o.children()
return d
folder = os.path.abspath('.')
json.dump(File(folder), sys.stdout, default=_default)
Много людей (включая мою компанию), кажется, использует MaxMind GeoIP.
у Них есть бесплатная версия GeoLite, который не так точен как заплаченная версия, но если Вы сразу после чего-то простого, это может быть достаточно хорошо.
Самыми точными являются Цифровые Элементы NetAcuity... не свободный, но Вы получаете то, что Вы платите большую часть времени.... Цифровой Элемент
Я не знаю, как точный, который hostip.info сайт. Я просто посетил тот сайт, и он сообщил, что моей страной является Канада. Я нахожусь в США и ISP, который использует мой офис, только работает из США. Это действительно позволяет Вам исправлять, это - предположение, но если Вы будете использовать этот сервис отследить посетителей веб-сайта страной, у Вас не будет способа знать, корректны ли данные. Конечно, я - всего одна точка данных. Я загрузил базу данных GeoLite Country, которая является просто .csv файлом, и мой IP-адрес был правильно идентифицирован как США.
Другое преимущество линейки продуктов MaxMind (заплаченный или свободный) - то, что у Вас есть данные, Вы не подвергаетесь хиту производительности совершения звонка веб-сервиса к другой системе.
Вот хороший бесплатный сервис с общедоступным API: http://www.hostip.info/use.html
Существует два подхода: использование интернет-сервиса и использование некоторого локального списка (возможно, обернутый в библиотеку). То, что Вы хотите, будет зависеть от того, что Вы создаете.
Для сервисов:
Для списков:
Вы могли самокрутка путем загрузки списков с RIRs:
ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
формат документируется в этом README
IPINFODB предоставляет бесплатную базу данных и API для IP на страну и наоборот. Они используют бесплатные данные из MaxMind. Данные обновляются каждый месяц, и это отличная бесплатная альтернатива с достойной точностью.
google's clientlocation возвращает ( мой пример)
latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;