为了账号安全,请及时绑定邮箱和手机立即绑定

将项目添加到列表列表 - Python

将项目添加到列表列表 - Python

慕姐4208626 2023-07-18 13:33:53
我希望使用此处的代码将域与其 DNS 解析器名称相匹配当前 CSV 输出domain1 dns1 dns2 dns3 \n domain2 dns1 dns2 dns3 \n etc这是不正确的格式,因为它将所有域和 DNS 解析器添加到同一行,而不是基于新域的新行。由于换行符,它们仅由空白单元格分隔。相反,我希望将其编写如下,其中每个域及其 dns 解析器都写入其自己的单独行。预期的 CSV 输出:domain1 dns1 dns2 dns3domain2 dns1 dns2 dns3domain3 dns1 dns2 dns3etc...我希望 CSV 文件以正确的格式写出,并且使用我拥有的代码,每次将域传递给 def dns_resolver 时,它都应该迭代到新的列表索引。这样,每个域及其 dns 解析器都有自己的列表,因此在写入新的 CSV 文件时,每个域将打印在 CSV 文件中自己的行中。该代码未正确迭代列表索引,因此不会将域及其 dns 名称添加到任何列表中。当它们全部写入同一个列表时,它工作正常,但它们全部写入同一行,这是不正确的。因此,我不会使用 1 个列表,而是使用一个列表列表,并将每个列表写入自己的列表,然后将每个列表写入 csv 文件,以便它们位于自己的行中。通常,域将从 csv 文件读入列表,但为此,我输入了 3 个值。import dns.resolver import csvimport osfrom os.path import dirname, abspathr = 0def 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 listeddomain_list = ['google.com', 'facebook.com', 'github.com']domain_amount = 0with open(domainFName, 'r') as file:    for line in csv.reader(file):        name = (line)        domain_list.append(line)        domain_amount += 1for first_domain in domain_list:    for x in first_domain:        outputWriter.writerow(dns_resolver(x))
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您可以简单地让dns_resolver函数返回给定域的列表。

这*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']

]


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信