0

当我尝试在 for 循环中填充元组时,我必须在这里遗漏一些东西。

    ...more code above...
    colItems = objSWbemServices.ExecQuery(queryString)

#print type(colItems)

是否需要上述行?

# print the results
for item in colItems:
    logTuple = (item.SourceName, item.Type, item.TimeGenerated, item.Message)
logTuple.sort(sortByTime)
return logTuple

上面的代码会将这些字段输入到一个元组中吗?

下面是要排序的代码,虽然我还不能测试它。

def sortByTime(t1, t2):
        if t1[2] < t2[2]:
            return -1
        elif t1[2] > t2[2]:
            return 1
        else:
            return 0

谢谢您的帮助。

4

2 回答 2

1

我不熟悉 ExecQuery 或您正在使用的结构,但我知道在您的 for 循环中,每次执行循环体时都会重写 logTuple。这应该可以解决问题:

logTuples = []
for item in colItems:
    logTuples.append( (item.SourceName, item.Type, item.TimeGenerated, item.Message) )
logTuples.sort(key=operator.itemgetter(2)) #credit: Thomas Jung
return logTuples
于 2013-05-24T06:07:25.297 回答
0

您可能的意思是将元组添加到列表中(而不是将 logTuple 设置为 for 循环中最后创建的元组):

for item in colItems:
    log = (item.SourceName, item.Type, item.TimeGenerated, item.Message)
    logTuple.append(log)

排序可以通过以下方式完成:

logTuples.sort(key=operator.itemgetter(2))
于 2013-05-24T06:05:13.187 回答