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

使用python在一行中打印多个变量

使用python在一行中打印多个变量

梵蒂冈之花 2021-03-28 10:54:25
我需要有关python脚本的一些帮助。我需要在dhcpd文件中搜索主机整体,其MAC和IP,并将其打印在一行中。我能够找到主机名和IP地址,但无法弄清楚如何将if语句中的变量放入一行中。任何建议,代码如下:#!/usr/bin/pythonimport sysimport re#check for argumentsif len(sys.argv) > 1:    print "usage: no arguments required"    sys.exit()else:    dhcp_file = open("/etc/dhcp/dhcpd.conf","r")    for line in dhcp_file:        if re.search(r'\bhost\b',line):            split = re.split(r'\s+', line)            print split[1]        if re.search(r'\bhardware ethernet\b',line):            ip = re.split(r'\s+',line)            print ip[2]    dhcp_file.close()
查看完整描述

3 回答

?
慕尼黑8549860

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

您可以通过多种方法进行此操作。最简单的方法可能是在if语句之前初始化一个空字符串。然后,不要打印split [1]和ip [2],而是将它们连接到空字符串,然后打印。所以看起来像这样:


    printstr = ""

    if re.search...

        ...

        printstr += "Label for first item " + split[1] + ", "

    if re.search...

        ...

        printstr += "Label for second item " + ip[2]

    print printstr


查看完整回答
反对 回复 2021-04-02
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您还可以使用标记curhost,并填充字典:


with open("dhcpd.conf","r") as dhcp_file:

    curhost,hosts=None,{}

    for line in dhcp_file:

        if curhost and '}' in line: curhost=None

        if not curhost and re.search(r'^\s*host\b',line):

            curhost=re.split(r'\s+', line)[1]

            hosts[curhost] = dict()

        if curhost and 'hardware ethernet' in line:

            hosts[curhost]['ethernet'] = line.split()[-1]


print hosts


查看完整回答
反对 回复 2021-04-02
  • 3 回答
  • 0 关注
  • 365 浏览
慕课专栏
更多

添加回答

举报

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