Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python gaierror:[Errno 8]提供了节点名或服务名,或者未知_Python_Dns_Hostname - Fatal编程技术网

Python gaierror:[Errno 8]提供了节点名或服务名,或者未知

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

我想从文本文件解析主机名的ip地址。以下代码适用于ipv4地址:

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)