首页 > 解决方案 > 在 __getattr__ 中引发 AttributeError(attr) AttributeError: to_text

问题描述

该程序假定返回针对域解析的域名和 MX。但它给出了这个错误,不确定我做错了什么。我收到此错误:getattr raise AttributeError(attr) AttributeError: to_text

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import socket
import dns.resolver
import re

domain = ['gmail.com' , 'hotmail.com' , 'abcfder.abc']

#function for mx
def getmx (domain):
    nomx= "no.mx.resolved."
try:
    result = dns.resolver.query(domain, 'MX')
    #for mailexchange in result:
    return (domain, result.to_text())
    #break
except dns.exception.DNSException as e:
    if isinstance(e, dns.resolver.NXDOMAIN):
    return (domain, nomx)
    #break

#function to remove '\n' from list

def clean (domainname):
    tmpstr = domainname
    domainname = tmpstr.strip()
    return (domainname)

#loop to keep sending domain names to MX function till EOF
x=0
while x<len(domain):
    strtmp = domain[x]
    d = clean(strtmp)
    #print (d)
    mx=getmx(d)
    print (mx)
    x=x+1   
f.close()

标签: python-3.xdns

解决方案


dns.resolver.query 返回一个没有方法的Answerto_text()对象,但 Answer 有一个 response 属性to_text(),尝试:

result.response.to_text()

推荐阅读