我倾向于只对路径使用正斜杠('/'),而python也对它在窗口上也很满意.在os.path.join的描述中,它表示如果你想跨平台,这是正确的方法.但是当我使用它时,我会得到混合斜杠:
import os
a = 'c:/'
b = 'myFirstDirectory/'
c = 'mySecondDirectory'
d = 'myThirdDirectory'
e = 'myExecutable.exe'
print os.path.join(a, b, c, d, e)
# Result:
c:/myFirstDirectory/mySecondDirectory\myThirdDirectory\myExecutable.exe
Run Code Online (Sandbox Code Playgroud)
它是否正确?我应该在之后检查并纠正它还是有更好的方法?
谢谢
编辑:当我要求路径时,我也会得到混合斜杠
import sys
for item in sys.path:
print item
# Result:
C:\Program Files\Autodesk\Maya2013.5\bin
C:\Program Files\Autodesk\Maya2013.5\mentalray\scripts\AETemplates
C:\Program Files\Autodesk\Maya2013.5\Python
C:\Program Files\Autodesk\Maya2013.5\Python\lib\site-packages
C:\Program Files\Autodesk\Maya2013.5\bin\python26.zip\lib-tk
C:/Users/nookie/Documents/maya/2013.5-x64/prefs/scripts
C:/Users/nookie/Documents/maya/2013.5-x64/scripts
C:/Users/nookie/Documents/maya/scripts
C:\Program Files\Nuke7.0v4\lib\site-packages
C:\Program Files\Nuke7.0v4/plugins/modules
Run Code Online (Sandbox Code Playgroud) 我有一个循环给我三个变量
matteGroup
matteName
object
Run Code Online (Sandbox Code Playgroud)
我想做一个嵌套的dicionary保存所有数据,如:
dictionary{matteGroup: {matteName: obj1, obj2, ob3} }
Run Code Online (Sandbox Code Playgroud)
我正在逐个检查对象,所以我想创建matteGroup它,如果它不存在,创建matteName它,如果它不exixst,然后创建或追加对象的名称.我尝试了许多解决方案,如普通字典,defaultdict和我在网上找到的一些自定义类,但我无法正常完成.我有一个很好的嵌套我无法追加,反之亦然.
这是循环
dizGroup = {}
dizName = {}
for obj in mc.ls(type='transform'):
if mc.objExists(obj + ('.matteGroup')):
matteGroup = mc.getAttr(obj + ('.matteGroup'))
matteName = mc.getAttr(obj + ('.matteName'))
if matteGroup not in dizGroup:
dizGroup[matteGroup] = list()
dizGroup[matteGroup].append(matteName)
if matteName not in dizName:
dizName[matteName] = list()
dizName[matteName].append(obj)
Run Code Online (Sandbox Code Playgroud)
有了这个,我分别得到了两本词典,但不是那么有用!任何提示?
谢谢