如何从输出中选择特定文本?

2024-04-19 19:21:01 发布

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

我正在通过从一个csv文件读取主机名来执行nslookup,我想将FQDN写入另一个csv文件。你知道吗

这是我的密码:

import subprocess

with open('csv1.csv', 'r') as i, open('csv2.csv', 'w') as o:
   for line in i:
     if line.strip(): # skips empty lines
        proc = subprocess.Popen(["nslookup", line.strip()],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
        o.write('{}\n'.format(proc.communicate(0)))

print('Done')

我面临的问题是,当在cmd->;nslookup中执行时,它会以类似的方式提供所有详细信息,例如“SERVER”、“ADDRESS”、“FQDN”及其IP地址 以下是其中一个主机名的示例:

(b'Server:  anything.na.com\r\nAddress:  10.3.56.7\r\n\r\nName:    ABCD12.na.com\r\nAddress:  10.4.67.8\r\nAliases:  abcd12.na.com\r\n\r\n'

我只想将这里的FQDN名称提取到csv文件中。你知道吗


Tags: 文件csvcomaslineprocopen主机名
1条回答
网友
1楼 · 发布于 2024-04-19 19:21:01

只需使用resplit查找您要查找的数据:

import subprocess

with open('csv1.csv', 'r') as i, open('csv2.csv', 'w') as o:
   for line in i:
     if line.strip(): # skips empty lines
        proc = subprocess.Popen(["nslookup", line.strip()],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
        stdout_data, stderr_data = proc.communicate(0)
        fqdn = stdout_data.split(b'Server:  ')[1].split(b'\r\n')[0]
        o.write('{}\n'.format(fqdn))

相关问题 更多 >