yeonghoon.kim

  • 게시판
  • 갤러리
  • aws

geoip2 python

김영훈 2023.08.10 14:34 조회 수 : 331

# 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()

 


  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 1

  • 김영훈

    2023.08.10 14:38

    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()
     

    이 리팩토링된 코드는 다음과 같은 변경 사항을 포함합니다:

    1. sys.stdout을 사용하는 대신에 파일을 열고 닫는 with 문을 사용하여 출력을 관리합니다.
    2. IP 주소를 읽을 때 불필요한 공백을 제거하여 처리합니다.
    3. 응답에서 국가 정보를 가져올 때, 국가 정보가 없는 경우에 대한 처리를 추가했습니다.

    이제 위 코드를 사용하여 원하는 결과를 얻을 수 있을 것입니다.

    추천0 비추천0 댓글

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

업로드 중... (0%)

0개 첨부 됨 ( / )
 
번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 985
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 638
245 rocky linux 9 - init_script.sh 김영훈 2023.12.08 399
244 자바스크립트 화살표 함수 김영훈 2023.10.06 366
243 sar bash 스크립트 [1] 김영훈 2023.09.05 425
242 ELK Stack 테스트 [1] 김영훈 2023.08.30 322
241 CentOS7 php 7.4 + composer 설치 김영훈 2023.08.18 526
240 iptables ip 포워딩 [1] 김영훈 2023.08.17 309
239 삼성 스마트태그 배터리 - CR2032 김영훈 2023.08.15 279
» geoip2 python [1] 김영훈 2023.08.10 331
237 pyapns_client 동시에 여러 기기로 푸시 보내기 김영훈 2023.08.03 393
236 2학기 수강신청 김영훈 2023.08.01 297
235 let's encrypt 와일드카드 인증서 발급 (CentOS7) [2] 김영훈 2023.07.26 580
234 FCM 푸시보내기 - firebase_admin 김영훈 2023.07.20 300
233 FCM 푸시 보내기 - pyfcm 김영훈 2023.07.20 341
232 rockylinux kvm [1] 김영훈 2023.07.12 331
231 SAP_1. Identity & Federation Section 김영훈 2023.06.13 278
230 [Bard] node.js forever 사용법 알려줘 김영훈 2023.05.18 305
229 Sectigo PositiveSSL 신청 시 파일 - 20230512 기준 [1] file 김영훈 2023.05.12 333
228 데이터베이스 3주차 실습 김영훈 2023.03.19 341
227 python csv 파일 읽은 후 엑셀 파일로 저장 샘플 김영훈 2023.03.16 372
226 데이터베이스 2주차 - 실습 김영훈 2023.03.08 325
쓰기 태그
 첫 페이지 1 2 3 4 5 6 7 8 9 10 끝 페이지