【问题标题】:TypeError: argument of type 'MX' is not iterable类型错误:\'MX\' 类型的参数不可迭代
【发布时间】:2022-11-29 18:32:39
【问题描述】:
import dns.resolver
answer=dns.resolver.resolve("google.com", "MX")
for data in answer:
    print (data)
    if "smtp.google.com" in data:
      print("cool")

尽管我付出了努力,但我不断收到此错误。

类型错误:“MX”类型的参数不可迭代

【问题讨论】:

  • 您可能想先尝试查看 answer 到底是什么类型...它既不是字符串也不是字符串列表。
  • 请参阅dnspython.org/examples 页面上的第一个示例,这正是您的需要,并展示了如何在回复中进行迭代。一般的专业提示,与 DNS 无关:不要将变量命名为data,因为它不会说明它所包含的内容。
  • 谢谢修好了

标签: python-3.x dns iterable


【解决方案1】:

正如 Patrick 在问题 cmets 中提到的,变量“data”不是字符串列表,而是 dns.retypes.MX.MX。如果你想查看邮件交换主机是否匹配“smtp.google.com”,你可以这样做:

import dns.resolver
answers = dns.resolver.resolve("google.com", "MX")
for rdata in answers:
    print(rdata.exchange)
    print(rdata.priority)
    if "smtp.google.com" == rdata.exchange:
        print("cool")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多