当我尝试在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
感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分: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))