【发布时间】:2015-06-11 14:29:51
【问题描述】:
我是新来的,所以我很清楚这一点,我希望我的问题得到了明确的询问,以帮助我。我正在尝试更改 Brent Tylers Dropbox 脚本,以便我能够在 Python 下列出 Python,在 Mel 下列出 Mel 等等(最终还有插件和其他文件,但现在还没有)
好的,我的目录是这样的:
1.
sf=C:/users/scripts/ a.py + b.mel
pf=C:/users/scripts/Python/c.py
mf=C:/users/scripts/Mel/d.mel
(这些是我的脚本将放入的文件夹)
代码:
absoluteFiles = []
relativeFiles = []
folders = []
allFiles = []
currentFile = ''
for root, dirs, files in os.walk(sf):
for x in files:
correct = root.replace('\\', '/')
currentFile = (correct + '/' + x)
allFiles.append(currentFile)
if currentFile.endswith('.mel'):
relativeFiles.append(currentFile.replace((mf + '/'), ""))
if currentFile.endswith('.py'):
relativeFiles.append(currentFile.replace((pf + '/'), ""))
relativeFiles.sort()
for relativeFile in relativeFiles:
split = relativeFile.split('/')
fileName = split[-1].split('.')
i=0
while i<(len(split)):
### Create Folders ###
if i==0 and len(split) != 1:
if cmds.menu(split[i] ,ex=1) == 0:
cmds.menuItem(split[i], p=PadraigsTools, bld=1, sm=1, to=1, l=split[i])
if i > 0 and i < (len(split)-1):
if cmds.menu(split[i] ,ex=1) == 0:
cmds.menuItem(split[i], p=split[i-1], bld=1, sm=1, to=1, l=split[i])
### Create .mel Files ###
if fileName[-1] == 'mel':
if i==len(split)-1 and len(split) > 1:
scriptName = split[-1].split('.')
temp1 = 'source ' + '"' + sf + '/' + relativeFile + '"; ' + scriptName[0]
command = '''mel.eval(''' + "'" + temp1 + '''')'''
cmds.menuItem(split[i], p=split[i-1], c=command, l=split[i])
if i==len(split)-1 and len(split) == 1:
scriptName = split[-1].split('.')
temp1 = 'source ' + '"' + sf + '/' + relativeFile + '"; ' + scriptName[0]
command = '''mel.eval(''' + "'" + temp1 + '''')'''
cmds.menuItem(split[i], p=Mel, c=command, l=split[i])
### Create .py Files ###
if fileName[-1] == 'py':
if i==len(split)-1 and len(split) > 1:
command = 'import ' + fileName[0] + '\n' + fileName[0] + '.' + fileName[0]+ '()'
cmds.menuItem(split[i], p=split[i-1], c=command, l=split[i])
if i==len(split)-1 and len(split) == 1:
command = 'import ' + fileName[0] + '\n' + fileName[0] + '.' + fileName[0]+ '()'
cmds.menuItem(split[i], p=Python, c=command, l=split[i])
i+=1
到目前为止,我可以单独打印(sf、pf、mf)到相应的目录,但我不能一次列出所有内容,sf 下的文件根本不会显示。关于创建的文件夹,结果很奇怪。有时我会得到一个重复的文件夹作为子菜单,如果我使用 sf 它会给我 C:/.
经过数天数小时的研究试图修正此脚本,我没有找到任何答案,包括
from itertools import chain
paths = (mf, sf, pf)
for path, dirs, files in chain.from_iterable(os.walk(path) for path in paths):
::QUESTION:: 有没有办法我可以将它们巧妙地组合在一起,以便新文件夹在刷新时显示其内容作为子菜单,并且文件将显示并允许我从相应的子菜单中执行它们。
我将不胜感激任何可能的帮助,包括反对票哈哈。请记住,我不希望你用金汤匙把答案交给我,因为我不知道要纠正什么或需要纠正什么:)
非常感谢 -- 帕德莱格
【问题讨论】:
标签: python menu directory maya