[英]Print multiple variables in one line using python
我需要一些python脚本的帮助。 我需要在dhcpd文件中搜索主机entires,它们的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()
你可以通过多种方式解决这个问题。 最简单的可能是在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
在一般情况下,您可以为print()提供以逗号分隔的值,以便在一行上打印它们:
entries = ["192.168.1.1", "supercomputer"]
print "Host:", entries[0], "H/W:", entries[1]
在您的特定情况下,如何将相关条目添加到列表,然后在最后打印该列表?
entries = []
...
entries.append(split[1])
...
print entries
此时,您可能希望将已收集的“条目”加入单个字符串中。 如果是这样,您可以使用join()方法(由abarnert建议):
print ' '.join(entries)
或者,如果你想获得更好的,你可以使用“string”字典:“list”并附加到这些列表,具体取决于它们的键字符串(例如'host','hardware'等...)
您还可以使用标志, 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.