socket.gethostbyname 失败

1 投票
2 回答
4890 浏览
提问于 2025-04-17 05:55

我正在尝试从一个文件中逐行读取主机名,并同时将每个DNS名称解析为它的IP地址。我使用了这段非常简单的代码:

import socket

path = "C:\Domain\domains.txt"

f = open(path, 'r')

for line in f:
    print socket.gethostbyname(line)

但是我遇到了这个错误:

Traceback (most recent call last):
  File "C:\resolve.py", line 8, in <module>
    print socket.gethostbyname(line)
gaierror: [Errno 11004] getaddrinfo failed

我查了一些资料,发现失败的原因可能是因为\n这个换行符。我尝试了几种方法来去掉\n,但都没有成功。你能帮我解决这个问题吗?

谢谢你。

2 个回答

-1

你确定这一行的格式是正确的吗?

for line in f:
    print repr(line)
    print socket.gethostbyname(line)
0

查看一下关于 gethostbyname文档

这个函数的作用是把一个主机名转换成IPv4地址格式。返回的IPv4地址是一个字符串,比如说 '100.50.200.5'。

还有关于错误11004的 文档中提到:

请求的名称是有效的,并且在数据库中找到了,但它没有正确的关联数据来进行解析。

撰写回答