2012-11-25 2 views
0

그래서이 IP 목록을 CSV 파일로 만듭니다. 단 하나의 열, 만약 내가 고양이 파일을 다른 라인에 나타납니다 및 파일 명령을 말해 그것은 ASCII 텍스트입니다.CSV 형식으로 파이썬에서 IP 목록 사용

하지만 파일을 루프 처리하고 다른 IP 주소를 확인하려고하면 "socket.herror : [Errno 1] Unknown host"오류가 발생합니다.

셀의 값이 올바르게 문자열이 아니기 때문에 그것을 하나로 변환하는 데 문제가 있습니다.

from string import rstrip 
from socket import gethostbyaddr 

csv_file = open('csv_list.csv', "r") 

for line in csv_file: 
    dns_name = gethostbyaddr(str(line.rstrip('\n'))) 
    print "IP: " + line.rstrip('\n') + "DNS Name:" + dns_name[0] 

이 방법이 있습니까? 지금까지 파일의 모든 값을 목록에 추가하는 일반 텍스트 파일로 변환하는 것에 대해 생각해 보았지만 최상의 솔루션이 무엇인지 확신 할 수 없습니다.

누구든지 아이디어가 있습니까?

미리 감사드립니다.

+0

샘플 입력 데이터는 편리 할 것입니다 ... –

+0

줄을'str()'할 필요가 없습니다. 이미 줄입니다. 'gethostbyaddr (line.strip())'(줄 바꿈뿐만 아니라 모든 * 공백을 제거하십시오)을 시도하십시오. –

답변

3

문제는 파일을 읽는 것이 아니라 (with ...을 사용하여 최적화 할 수 있음) 문제는 하나의 IP를 역으로 찾을 수 없다는 것입니다. 이 경우 gethostbyaddr 함수는 예외를 throw합니다.

샘플을 조금 작성했는데 오류가 아닌 예외로보고하지만 메시지가 출력됩니다. IP가이 목록에 대한 예를 들어

from string import rstrip 
from socket import gethostbyaddr 

with open('csv_list.csv', 'r') as csv_file: 
    for line in csv_file: 
     ip = line.strip() 
     try: 
      dns_name = gethostbyaddr(ip) 
      print "IP: %s, DNS Name: %s" % (ip, dns_name[0]) 
     except Exception, e: 
      print "IP: %s, DNS lookup error: %s" % (ip, e) 

:

1.2.3.4 
8.8.8.8 
4.4.4.4 
bad IP 
1.2.3 

그것은 또한 파일에서 배열을 만들 NumPy와 loadtxt을 시도 할 수 있습니다

IP: 1.2.3.4, DNS lookup error: [Errno 1] Unknown host 
IP: 8.8.8.8, DNS Name: google-public-dns-a.google.com 
IP: 4.4.4.4, DNS lookup error: [Errno 1] Unknown host 
IP: bad IP, DNS lookup error: [Errno 8] nodename nor servname provided, or not known 
IP: 1.2.3, DNS lookup error: [Errno 1] Unknown host 
+0

고마워요! 정말로 그게 진짜 문제라는 걸 깨닫지 못했습니다. 고마워요! – xeet

1

인쇄합니다.

+0

감사합니다. =) – xeet

관련 문제