处理 ls() 结果
使用 ls()
作为过滤器有时可以产生奇数结果。如果你不小心忘记传递过滤器参数并调用没有参数的 ls()
,你将获得 Maya 场景中每个节点的列表 :
cmds.ls()
# [u'time1', u'sequenceManager1', u'hardwareRenderingGlobals', u'renderPartition'...] etc
一个常见的原因是在 ls()
中使用* args:
cmds.ls(["fred", "barney"]) # OK, returns ['fred', 'barney']
cmds.ls([]) # OK, returns []
cmds.ls(*[]) # not ok: returns all nodes!
Maya 2015 及更早版本
在 Maya 2015 及更早版本中,找不到任何内容的 ls()
查询将返回 None
而不是空列表。如果使用结果,可能会导致异常:
for item in cmds.ls("don't_exist"):
print item
# Error: TypeError: file <maya console> line 1: 'NoneType' object is not iterable
解决这个问题最干净的习惯用法是在 ls()
操作后添加 or []
时返回 None 时添加替代输出。这将确保返回是一个空列表而不是 None
:
for item in cmds.ls("don't_exist") or []:
print item
# prints nothing since there's no result -- but no exception