Python 运行 在 .txt 文件的 IP 地址列表上进行 DNS 查找

Python running DNS lookups on a list of IP addresses from .txt file

我很难弄清楚如何让 python 对我的文本文件中的每个 IP 地址进行 DNS 查找。我收到 TypeError: getaddrinfo() argument 1 must be string or None。任何人都可以帮忙吗?

import socket

ip_list = open('output.txt', 'r')
ais = socket.getaddrinfo(ip_list, 0)

print(ais)

当您需要遍历文件迭代器并将字符串传递给函数时,您将 file 可迭代对象直接作为参数传递给 socket.getaddrinfo。假设每一行包含一个IP:

with open('output.txt') as f:
    for ip in f:
        out = socket.getaddrinfo(ip, 0)
        ...

备注:

  • 使用 with open... 上下文管理器自动 close() 文件对象,即使出现错误也无需显式调用 close()

  • 默认情况下 open() 以读取 (r) 模式打开文件,因此指定 r 是多余的,不会伤害顺便说一句。