0

我有一个从 CA Introscope 提取数据的脚本。该脚本打印出如下值:

print data

[(TimesliceGroupedMetricData){
   metricData[] = 
      (MetricData){
         agentName = "web01|WEB|instance_01"
         metricName = "WebSpherePMI|orbPerfModule:ConcurrentRequestCount"
         metricType = 258
         metricValue = "0"
      },
      (MetricData){
         agentName = "app01|APP|instnace_03"
         metricName = "WebSpherePMI|beanModule|mobile.jar:ReturnsToPoolCount"
         metricType = 258
         metricValue = "3"
      },
      (MetricData){
         agentName = "app02|APP|instance_02"
         metricName = "JSP|add_client:Stall Count"
         metricType = 385
         metricValue = "0"
      },
      (MetricData){
         agentName = "web05|WEB|instance_02"
         metricName = "WebSpherePMI|beanModule|bizlogic#bizlogic.jar|ejb.entity|WorkStepInstanceEBBBean:ReadyCount"
         metricType = 258
         metricValue = "0"
      },
   timesliceEndTime = 2015-01-05 16:33:15
   timesliceStartTime = 2015-01-05 16:28:15


}]

我需要这个输出打印出来:

metricName、AppName、ServerName、InstanceName、Value、timesliceEndTime

实际数据:

WebSpherePMI|orbPerfModule:ConcurrentRequestCount, WEB, web01,instance_01, 0, 2015-01-05 16:33:15
WebSpherePMI|beanModule|mobile.jar:ReturnsToPoolCount,APP,app01,instance_02,3, 2015-01-05 16:33:15
JSP|add_client:Stall Count, APP, app02,instance_02,0, 2015-01-05 16:33:15
WebSpherePMI|beanModule|bizlogic#bizlogic.jar|ejb.entity|WorkStepInstanceEBBBean:ReadyCount, WEB, web05, insntance02, 0, 2015-01-05 16:33:15

我用逗号分隔字段输出,但不是必需的。有人可以给我一些指导方针如何在python中做到这一点吗?

4

1 回答 1

2

好的,就是这样。我创建了一个虚拟类并用你的数据填充了它,所以它被测试了,YMMV。

def dumpDataBlob(blob):
    """ Print data object in required format """

    timesliceEndTime = blob.timesliceEndTime

    for entry in blob.metricData:
        # gather values
        metricName = entry.metricName
        metricValue = entry.metricValue
        (serverName, appName, instanceName) = entry.agentName.split('|')

        print('{met},{app},{ser},{ins},{val},{tim}'.format(
            met=metricName,
            app=appName,
            ser=serverName,
            ins=instanceName,
            val=metricValue,
            tim=timesliceEndTime))

这是我的测试课程,仅供参考

class MetricData:
    def __init__(self, agentName, metricName, metricType, metricValue):
        self.agentName = agentName
        self.metricName = metricName
        self.metricType = metricType
        self.metricValue = metricValue

class DummyObject:
    metricData = []

    def __init__(self):
        self.metricData = []

        self.metricData.append(MetricData(
            agentName = "web01|WEB|instance_01",
            metricName = "WebSpherePMI|orbPerfModule:ConcurrentRequestCount",
            metricType = 258,
            metricValue = "0"
        ))

        self.metricData.append(MetricData(
            agentName = "app01|APP|instnace_03",
            metricName = "WebSpherePMI|beanModule|mobile.jar:ReturnsToPoolCount",
            metricType = 258,
            metricValue = "3"
        ))

        self.metricData.append(MetricData(
            agentName = "app02|APP|instance_02",
            metricName = "JSP|add_client:Stall Count",
            metricType = 385,
            metricValue = "0"
        ))

        self.metricData.append(MetricData(
            agentName = "web05|WEB|instance_02",
            metricName = "WebSpherePMI|beanModule|bizlogic#bizlogic.jar|ejb.entity|WorkStepInstanceEBBBean:ReadyCount",
            metricType = 258,
            metricValue = "0"
        ))

        self.timesliceEndTime = "2015-01-05 16:33:15"
        self.timesliceStartTime = "2015-01-05 16:28:15"
于 2015-01-06T16:42:01.143 回答