我使用WLST (python/jython)来获得一些WebLogic资源的配置。我在jms模块的队列中循环,对于每个队列,我会恢复名称和一些其他参数。
使用这个信息,我构建了一个2D列表,我想通过queueName订购。
虽然我可以在python控制台中成功地完成以下两种方法:
from operator import itemgetter
L=[["queueName1", 1, 2], ["queueName2", 2, 3], ["queueName3", 4, 1]]
sorted(L, key=itemgetter(0))
或
L=[["queueName1", 1, 2], ["queueName2", 2, 3], ["queueName3", 4, 1]]
sorted(L, key=lambda x: x[0])
当我使用.py脚本时,我的WL服务器(10.3.5版)中的python/jython版本(我真的不知道使用了什么)不喜欢这样:
list2d.sort(key=lambda x: x[0])
我知道错误:
Problem invoking WLST - Traceback (innermost last):
File "/home/user/scripts/pythonscripts/get_jms_config.py", line 98, in ?
File "/home/user/scripts/pythonscripts/get_jms_config.py", line 69, in getInfo
TypeError: sort() takes no keyword arguments
如果我尝试使用itemgetter,也不会更好,因为我得到了以下错误:
Problem invoking WLST - Traceback (innermost last):
File "/home/user/scripts/pythonscripts/get_jms_config.py", line 5, in ?
ImportError: cannot import name itemgetter
有人有什么建议吗?
编辑:
def getQueueInformation():
try:
list2d = []
j = 1
jmsSystemResources = cmo.getJMSSystemResources();
for jmsSystemResource in jmsSystemResources:
queues = jmsSystemResource.getJMSResource().getQueues();
for queue in queues:
# print some information
row = []
row.append(queue.getName())
row.append(str(queue.getDeliveryParamsOverrides().getRedeliveryDelay()))
row.append(str(queue.getDeliveryFailureParams().getRedeliveryLimit()))
list2d.append(row)
j += 1
return list2d
except WLSTException:
print 'an error occurred...',
你好,黛博拉
发布于 2014-11-04 15:58:15
听起来好像是在2.4之前运行Python2.4版本,也就是引入.sort(key=...)
的时候。您可以尝试使用cmp()
版本的.sort()
list2d.sort(lambda left, right: cmp(left[0], right[0]))
https://stackoverflow.com/questions/26739026
复制相似问题