首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gaierror:[Errno 8] nodename或servname未提供,或未知

gaierror:[Errno 8] nodename或servname未提供,或未知
EN

Stack Overflow用户
提问于 2020-10-08 18:05:42
回答 1查看 967关注 0票数 0

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

代码语言:javascript
复制
hostname1.txt:
google.com
yahoo.com
facebook.com
cnn.com
代码语言:javascript
复制
with open('hostname1.txt','r') as hostnames:
    for website in hostnames:
        ip = socket.gethostbyname(website.strip())
        
        print ('{0} ip address is: {1}'.format(website,ip))

对于ipv6,我使用了下面的代码,当文本文件中只有一个主机名时,它工作得很好。如果文本文件中有多个主机名,我会收到这个错误消息"gaierror: Errno 8 nodename or servname provided,or not known“

代码语言:javascript
复制
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))
代码语言:javascript
复制
gaierror: [Errno 8] nodename nor servname provided, or not known
EN

回答 1

Stack Overflow用户

发布于 2020-10-09 13:59:04

readlines 保留换行符,所以你的hostname列表是 ['google.com\n', 'yahoo.com\n', 'facebook.com\n', 'cnn.com\n'] 你在 IPV4 部分剥离了 \nl不在 IPV6 部分。使用以下内容:

代码语言:javascript
复制
ais = socket.getaddrinfo(website.rstrip(),0,0,0,0)

你会得到正确的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64260272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档