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

我需要有关python脚本的一些帮助。我需要在dhcpd文件中搜索主机整体,其MAC和IP,并将其打印在一行中。我能够找到主机名和IP地址,但无法弄清楚如何将if语句中的变量放入一行中。任何建议,代码如下:


#!/usr/bin/python


import sys

import re


#check for arguments


if 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()


梵蒂冈之花
浏览 366回答 3
3回答

慕尼黑8549860

您可以通过多种方法进行此操作。最简单的方法可能是在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

斯蒂芬大帝

您还可以使用标记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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python