Python gaierror:[Errno 8]提供了节点名或服务名,或者未知
我想从文本文件解析主机名的ip地址。以下代码适用于ipv4地址:Python gaierror:[Errno 8]提供了节点名或服务名,或者未知,python,dns,hostname,Python,Dns,Hostname,我想从文本文件解析主机名的ip地址。以下代码适用于ipv4地址: hostname1.txt: google.com yahoo.com facebook.com cnn.com 对于ipv6,我使用了下面的代码,当文本文件中只有一个主机名时,它可以正常工作。如果文本文件中有多个主机名,则会出现以下错误“gaierror:[Errno 8]nodename或servname已提供,或未知” readlines保留新行字符,因此您的主机名列表是['google.com\n','yahoo.com
hostname1.txt:
google.com
yahoo.com
facebook.com
cnn.com
对于ipv6,我使用了下面的代码,当文本文件中只有一个主机名时,它可以正常工作。如果文本文件中有多个主机名,则会出现以下错误“gaierror:[Errno 8]nodename或servname已提供,或未知”
readlines
保留新行字符,因此您的主机名
列表是['google.com\n','yahoo.com\n','facebook.com\n','cnn.com\n']
您剥离了IPV4部分中的\nl
,而不是IPV6部分中的。
使用以下命令:
ais = socket.getaddrinfo(website.rstrip(),0,0,0,0)
您将得到正确的结果。尝试调试代码,看看第二次运行循环时会发生什么。如果第一次有效,而不是第二次,那么肯定是出了问题。请编辑标题,使其清晰
import socket
with open('hostname1.txt') as f:
hostname = f.readlines()
for website in hostname:
ais = socket.getaddrinfo(website,0,0,0,0)
for result in ais:
ip = result[-1][0]
print ('{0} ip address is {1}'.format(website,ip))
gaierror: [Errno 8] nodename nor servname provided, or not known
ais = socket.getaddrinfo(website.rstrip(),0,0,0,0)