# Install via pip
#pip install geoip2
import geoip2.database
import sys
sys.stdout = open('iplist_result.csv', 'w')
# This reader object should be reused across lookups as creation of it is
# expensive.
with geoip2.database.Reader('GeoLite2-City.mmdb') as reader:
iplist_file_open=open("iplists.txt", "r")
for list in iplist_file_open:
response = reader.city(list.strip())
print(response.country.iso_code + "," + list, end='')
iplist_file_open.close()
sys.stdout.close()
IP 위치 정보 CSV 저장. 위 코드를 리팩토링해줘
import geoip2.database
def main():
with geoip2.database.Reader('GeoLite2-City.mmdb') as reader:
with open('iplists.txt', 'r') as iplist_file, open('iplist_result.csv', 'w') as output_file:
for ip in iplist_file:
ip = ip.strip()
response = reader.city(ip)
country_iso_code = response.country.iso_code if response.country else "Unknown"
output_file.write(f"{country_iso_code},{ip}\n")
if __name__ == "__main__":
main()
이 리팩토링된 코드는 다음과 같은 변경 사항을 포함합니다:
sys.stdout
을 사용하는 대신에 파일을 열고 닫는with
문을 사용하여 출력을 관리합니다.이제 위 코드를 사용하여 원하는 결과를 얻을 수 있을 것입니다.