Maya导入OBJ文件报错:TypeError: NoneType对象无len()方法
解决Maya导入OBJ脚本的TypeError问题
嘿,这个错误我之前也踩过坑!咱们一步步捋清楚怎么解决:
错误原因分析
你看到的Error: line 1: TypeError: file <maya console> line 8: object of type 'NoneType' has no len(),本质是files变量变成了None——这说明cmds.getFileList()根本没找到你指定的路径,直接返回了空值,后面调用len(files)自然就报错了。
问题核心出在路径格式上:"/This PC/Desktop/Facial Rigging Blendshapes/"是Windows的虚拟路径(就是资源管理器里的“此电脑”那种),Maya的getFileList()识别不了这种路径,必须用实际的本地磁盘路径。
修改后的脚本
我给你调整了脚本,加了路径检查和更稳妥的写法:
import maya.cmds as cmds import os # 替换成你自己的实际路径!把YourUsername换成你的Windows用户名 pathOfFiles = "C:/Users/YourUsername/Desktop/Facial Rigging Blendshapes/" fileType = "obj" # 先确认路径存在,避免做无用功 if not os.path.exists(pathOfFiles): cmds.error(f"指定路径不存在,请检查:{pathOfFiles}") raise SystemExit # 获取OBJ文件列表 files = cmds.getFileList(folder=pathOfFiles, filespec=f'*.{fileType}') # 先判断files是否为空/None,再执行后续操作 if not files or len(files) == 0: cmds.warning("No files found") else: for f in files: # 用os.path.join拼接路径,避免手动拼斜杠出错 full_file_path = os.path.join(pathOfFiles, f) # 明确指定导入类型,忽略版本,让导入更稳定 cmds.file(full_file_path, i=True, type="OBJ", ignoreVersion=True, mergeNamespacesOnClash=False)
关键修改点说明
- 路径格式修正:把虚拟的
This PC路径换成实际的磁盘路径,比如C:/Users/小明/Desktop/...,注意路径里的斜杠用/或者双反斜杠\\ - 路径有效性检查:用
os.path.exists()提前判断路径是否存在,避免无效调用 - 安全路径拼接:用
os.path.join()替代手动拼接路径,能自动适配不同系统的路径分隔符 - 稳定导入参数:给
cmds.file()加上type="OBJ"和ignoreVersion=True,减少导入时的兼容性问题
怎么找自己的实际路径?
打开你的桌面文件夹,点击地址栏复制路径,然后把路径里的\换成/(或者改成\\)就行啦!
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

