我已经使用readlines()
将54000行日志导入到Python中。我需要从日志中提取不同数量的行来捕获服务器的版本和固件的修订。例如,日志中有3行:
# racadm getversion
<Server> <iDRAC Version> <Blade Type> <Gen> <Updatable>
server-1 1.57.57 (Build 04) PowerEdge M620 iDRAC7 Y
server-2 1.57.57 (Build 04) PowerEdge M620 iDRAC7 Y
racadm getversion
在日志中只出现1次。可以列出1到32台服务器。我需要解析此日志以捕获iDRAC版本和服务器版本,然后将它们保存到我的刀片类的类属性(self.iDRAC
,self.model
)。我还需要捕捉其他东西,但我应该能够应用同样的概念。你知道吗
如何添加一行代码(以下不是我的实际代码,只是一个粗略的示例):
if line in cmc.log == "# racadm getversion":
cmclist.next()
while line == "server-"
#do stuff to capture firmware
您对
next
调用的想法是正确的。为列表创建一个迭代器,然后使用for
、next
或itertools
中的助手来遍历它。迭代器会记住它们的位置,因此如果您提前退出循环,它们只会在下一项时重新启动。这里有几个itertools
的例子。第二个使用yield from
,这是python3。你知道吗一旦你有了这样一条线
您可以使用
split()
将每个部分分离成一个数组。默认情况下split()
将用任何空格分隔字符串。但字符串中似乎有一些字段中有空格。您可以将其拆分为一个选项卡(如果字符串是这样分隔的)如下所示:这里
line.split("\t")
应该给你:你可以查更多关于
split()
here。你知道吗你的问题有点不清楚,但这是正确的吗?你知道吗
简单地说,我不知道是用制表符还是四个连续的空格来分隔字段,所以我用正则表达式
(\s{4}|\t)
来处理这两种情况。如果你需要的话,你可以改变这个。你知道吗输出
相关问题 更多 >
编程相关推荐