Maya 2012 でこのエラーが発生しましたが、修正方法がわかりません。フォルダー内の他のファイルを検索するときに、python にinitファイルを無視させようとしています。どんな提案でも大歓迎です。
Error: 'NoneType' object is not iterable
Traceback (most recent call last):
File "<maya console>", line 18, in <module>
File "E:/3D/maya/2012-x64/scripts/RiggingTool/Modules\System\blueprint_UI.py" line 28, in __init__
self.initialiseModuleTab(tabHeight, tabWidth)
File "E:/3D/maya/2012-x64/scripts/RiggingTool/Modules\System\blueprint_UI.py", line 50, in initialiseModuleTab
for module in utils.findAllModules("Modules/Blueprint"):
File "E:/3D/maya/2012-x64/scripts/RiggingTool/Modules\System\utils.py", line 8, in findAllModules
for file in allPyFiles:
TypeError: 'NoneType' object is not iterable
メインコードは
import maya.cmds as cmds
import System.utils as utils
reload(utils)
class Blueprint_UI:
def __init__(self):
# Store UI elements in a dictionary
self.UIElements = {}
if cmds.window("blueprint_UI_window", exists=True):
cmds.deleteUI("blueprint_UI_window")
windowWidth = 400
windowHeight = 598
self.UIElements["window"] = cmds.window("blueprint_UI_window", width=windowWidth, height=windowHeight, title="Blueprint Module UI", sizeable=False)
self.UIElements["topLevelColumn"] = cmds.columnLayout(adjustableColumn=True, columnAlign="center")
# Setup tabs
tabHeight = 500
self.UIElements["tabs"] = cmds.tabLayout(height=tabHeight, innerMarginWidth=5, innerMarginHeight=5)
tabWidth = cmds.tabLayout(self.UIElements["tabs"], q=True, width=True)
self.scrollWidth = tabWidth - 40
self.initialiseModuleTab(tabHeight, tabWidth)
cmds.tabLayout(self.UIElements["tabs"], edit=True, tabLabelIndex=([1, "Modules"]))
# Display window
cmds.showWindow( self.UIElements["window"] )
def initialiseModuleTab(self, tabHeight, tabWidth):
scrollHeight = tabHeight # temp value
self.UIElements["moduleColumn"] = cmds.columnLayout(adj=True, rs=3)
self.UIElements["moduleFrameLayout"] = cmds.frameLayout(height=scrollHeight, collapsable=False, borderVisible=False, labelVisible=False)
self.UIElements["moduleList_Scroll"] = cmds.scrollLayout(hst=0)
self.UIElements["moduleList_column"] = cmds.columnLayout(columnWidth = self.scrollWidth, adj=True, rs=2)
# First separator
cmds.separator()
for module in utils.findAllModules("Modules/Blueprint"):
print module
フォルダー内のファイルを検索するコード:
def findAllModules(relativeDirectory):
# Search the relative directory for all available modules
# Return a list of all module names (excluding the ".py" extension)
allPyFiles = findAllFiles(relativeDirectory, ".py")
returnModules = []
for file in allPyFiles:
if file != "__init__":
returnModules.append(file)
return returnModules
def findAllFiles(relativeDirectory, fileExtension):
# Search the relative directory for all files with the given extension
# Return a list of all file names, excluding the file extension
import os
fileDirectory = os.environ["RIGGING_TOOL_ROOT"] + "/" + relativeDirectory + "/"
allFiles = os.listdir(fileDirectory)
# refine all files, listing only those of the specified file extension
returnFiles = []
for f in allFiles:
splitString = str(f).rpartition(fileExtension)
if not splitString[1] == "" and splitString[2] == "":
returnFiles.append(splitString[0])
print returnFiles
メイン内にこのコードを追加すると壊れます
for module in utils.findAllModules("Modules/Blueprint"):
__init__
下部のコードを追加すると、ファイル検索コード内でもエラーが発生します
returnModules = []
for file in allPyFiles:
if file != "__init__":
returnModules.append(file)
return returnModules
一番下の 2 つのコードは正しいように見えるため、NoneType エラーがどのように発生するのか正確にはわかりません。