Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表-如何使用dns.resolver.query for循环的域列表_Python_List_Python 2.7_Dns_Resolver - Fatal编程技术网

Python列表-如何使用dns.resolver.query for循环的域列表

Python列表-如何使用dns.resolver.query for循环的域列表,python,list,python-2.7,dns,resolver,Python,List,Python 2.7,Dns,Resolver,编辑 嘿,这里是我的工作代码在它的整体。我相信它可以改进,但我仍在学习 import dns import dns.resolver import os import csv import dns.resolver file = "domains.txt" f = open(file) data = f.read() f.close list = [] for url in data: answers = dns.resolver.query(url, 'MX') for r

编辑

嘿,这里是我的工作代码在它的整体。我相信它可以改进,但我仍在学习

import dns
import dns.resolver
import os
import csv
import dns.resolver

file = "domains.txt"
f = open(file)
data = f.read()
f.close
list = []

for url in data:
    answers = dns.resolver.query(url, 'MX')
    for rdata in answers:
        x = [rdata.exchange, rdata.preference]
        print(x)
        list.append([x])

您的
url
数据包括尾随的换行符。使用
.strip()
删除数据中的任何前导或尾随空格。试试这个:

import dns
import dns.resolver
import os
import csv

##tested on python 2.7 only

errcountA = 0
errcountMX = 0
listoflists = []

with open("domains.txt") as f:
    for url in f:
        A = []
        MX = []
        url = url.strip()
        try: 
            answers = dns.resolver.query(url, 'A') ##Get the A record
            for rdata in answers:
                A.append(rdata.address) ## Add A Records to list
        except: ## Incase the URL doesnt resolve
            A = "Error resolving"
            errcountA += 1

        try: ##Get the MX record
            answers = dns.resolver.query(url, 'MX')
            for rdata in answers:
                MX.append([rdata.preference, rdata.exchange])

        except: ##incase url doesnt resolver
            MX = "Error resolving"
            errcountMX += 1

        list = [url, MX, A]
        print(list)
        listoflists.append(list)

with open('output.csv', 'wb') as csvfile: ##write the csv file
    writer = csv.writer(csvfile)
    for r in listoflists:
        writer.writerow(r)

print listoflists
print ("There were %e A record errors") %errcountA
print ("There were %f MX record errors") %errcountMX
print ("Done!")

您的
url
数据包括尾随的换行符。使用
.strip()
删除数据中的任何前导或尾随空格。试试这个:

import dns
import dns.resolver
import os
import csv

##tested on python 2.7 only

errcountA = 0
errcountMX = 0
listoflists = []

with open("domains.txt") as f:
    for url in f:
        A = []
        MX = []
        url = url.strip()
        try: 
            answers = dns.resolver.query(url, 'A') ##Get the A record
            for rdata in answers:
                A.append(rdata.address) ## Add A Records to list
        except: ## Incase the URL doesnt resolve
            A = "Error resolving"
            errcountA += 1

        try: ##Get the MX record
            answers = dns.resolver.query(url, 'MX')
            for rdata in answers:
                MX.append([rdata.preference, rdata.exchange])

        except: ##incase url doesnt resolver
            MX = "Error resolving"
            errcountMX += 1

        list = [url, MX, A]
        print(list)
        listoflists.append(list)

with open('output.csv', 'wb') as csvfile: ##write the csv file
    writer = csv.writer(csvfile)
    for r in listoflists:
        writer.writerow(r)

print listoflists
print ("There were %e A record errors") %errcountA
print ("There were %f MX record errors") %errcountMX
print ("Done!")

请包含错误消息的全文。我正在尝试:(愚蠢的新手在这里。明白了;-)我必须用4个空格缩进代码请包含错误消息的全文。我正在尝试:(愚蠢的新手在这里。明白了;-)我不得不用4空格缩进代码。请原谅,但当我运行代码时,我仍然得到相同的错误:dns.resolver.noanswero我想我把它删掉了2倍。。。站在byRob旁边,我有一条新的错误消息:对于数据中的url:url=url.strip()dns.resolver.query(url,“MX”)对于答案中的rdata:x=[rdata.exchange,rdata.preference]打印(x)列表。追加([x])回溯(最近一次调用):文件“”,AttributeError:GenericRData对象中的第5行没有属性“exchange”。嘿,Rob,我认为一些URL无法解析,然后程序结束。感谢你的帮助,我写了以下(成功的)脚本!导入dns导入dns.resolver导入操作系统导入csv列表=[],打开(“domains.txt”)作为f:for-url-in-f:url=url.strip()打印url-try:answers=dns.resolver.query(url,'A')for-rdata-in-answers:print-rdata.address-list.append(rdata.address)除了:print(“err”)list.append(“err”)continue print list Rob原谅我,但是当我运行代码时,我仍然得到相同的错误:dns.resolver.noanswero我想我把它剥离了两倍。。。站在byRob旁边,我有一条新的错误消息:对于数据中的url:url=url.strip()dns.resolver.query(url,“MX”)对于答案中的rdata:x=[rdata.exchange,rdata.preference]打印(x)列表。追加([x])回溯(最近一次调用):文件“”,AttributeError:GenericRData对象中的第5行没有属性“exchange”。嘿,Rob,我认为一些URL无法解析,然后程序结束。感谢你的帮助,我写了以下(成功的)脚本!导入dns导入dns.resolver导入操作系统导入csv列表=[],打开(“domains.txt”)作为f:for-url-in-f:url=url.strip()打印url-try:answers=dns.resolver.query(url,'A')for-rdata-in-answers:print-rdata.address-list.append(rdata.address)除了:打印(“错误”)列表。附加(“错误”)继续打印列表
with open("domaints.txt") as f:
    for url in f:
        url = url.strip()
        answers = dns.resolver.query(url, 'MX')
        # Continue as before