将项目添加到Python列表中

2024-10-01 02:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找使用代码,我在这里匹配域的DNS解析程序名称

当前CSV输出

domain1 dns1 dns2 dns3 \n domain2 dns1 dns2 dns3 \n etc

这是不正确的格式,因为它将所有域和dns解析程序添加到同一行,而不是基于新域的新行。由于换行符的原因,它们仅由空白单元格分隔。相反,我希望它写在下面,每个域&;它的dns解析程序被写入各自的行中

预期CSV输出:

domain1 dns1 dns2 dns3
domain2 dns1 dns2 dns3
domain3 dns1 dns2 dns3
etc...

我希望CSV文件以正确的格式写入,并且使用我拥有的代码,每次将域传递给def dns_解析器时,它都应该迭代到新的列表索引。这样,每个域及其dns解析程序都有自己的列表,因此在写入新的CSV文件时,每个域都将打印在CSV文件中自己的行中

代码没有正确遍历列表索引,并且没有添加域&;因此,它的dns名称被添加到任何列表中。当它们都写在同一个列表中时,工作正常,但它们都写在同一行中,这是不正确的。因此,我将不使用1个列表,而是使用列表列表,并将每个列表写入其自己的列表,然后将每个列表写入csv文件,以便它们位于各自的行中。通常情况下,域将从csv文件读取到列表中,但为此,我输入了3个值

import dns.resolver 
import csv
import os
from os.path import dirname, abspath
r = 0

def dns_resolver(domain):
    server = []
    resolvers = []
    
    try:
        resolvers = dns.resolver.resolve(domain, 'NS')
        #dns_list.append(domain)
        for x in resolvers:
            #dns_list.append(x.target)
            #dns_list.append('\n') 
            server.append(str(x.target))
    except:
        server.append('did not resolve')
    finally:
        return (domain, *server)
            

# Read in all domains from csv file domains.csv & count how many domains there are listed
domain_list = ['google.com', 'facebook.com', 'github.com']
domain_amount = 0

with open(domainFName, 'r') as file:
    for line in csv.reader(file):
        name = (line)
        domain_list.append(line)
        domain_amount += 1

for first_domain in domain_list:
    for x in first_domain:
        outputWriter.writerow(dns_resolver(x))

Tags: 文件csvinimport程序列表dnsdomain
1条回答
网友
1楼 · 发布于 2024-10-01 02:24:24
  • 您只需让您的dns\u解析器函数返回给定域的列表即可
  • *server是将每个项目附加到列表中的简写形式
  • 使用列表理解,将所有列表收集到列表列表中,以写入CSV
def dns_resolver(domain):
    # do your dns resolution
    # server = dns.resolver.resolve(domain, 'NS')
    server = ["dns1", "dns2", "dns3", "dns4"]
    return [domain, *server]
        

# Read in all domains
domain_list = ['google.com', 'facebook.com', 'github.com']

print([dns_resolver(d) for d in domain_list])

输出:

[
   ['google.com', 'dns1', 'dns2', 'dns3', 'dns4'],
   ['facebook.com', 'dns1', 'dns2', 'dns3', 'dns4'],
   ['github.com', 'dns1', 'dns2', 'dns3', 'dns4']
]

相关问题 更多 >