簡體   English   中英

在python中使用CSV中的IP列表

[英]Use IP list in CSV in python

因此,我將這個IP地址列表保存在CSV文件中。 只有一列,如果我將文件放在目錄中,它們全部出現在不同的行上,並且file命令告訴我這是ASCII文本。

但是,當我嘗試循環瀏覽文件並解析不同IP的地址時,出現錯誤“ socket.herror:[Errno 1]未知主機”。

由於某種原因,單元格的值不是正確的字符串,因此我很難將其轉換為一個字符串。

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]

有沒有辦法解決? 我一直在考慮將文件轉換為純文本文件,到目前為止將文件中的所有值添加到列表中,但我不確定最好的解決方案是什么。

有人有想法么?

提前致謝!

您的問題不是讀取文件(也可以使用with ...進行優化),但是不能反向查找一個IP。 在這種情況下, gethostbyaddr函數將引發異常。

我對您的示例進行了一些整理,現在它報告的錯誤不是崩潰(帶有異常),而是打印出一條消息。

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)

例如,此IP列表:

1.2.3.4
8.8.8.8
4.4.4.4
bad IP
1.2.3

它打印

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

您也可以嘗試使用numpy loadtxt從文件創建數組。

    from numpy import loadtxt
    ip_list = loadtxt("filename.csv", unpack=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM