Maya Python技术问题:如何获取不含路径与扩展名的当前场景名
获取Maya当前场景的纯名称(不含路径和扩展名)
嘿,这个需求我太熟悉了!cmds.file(q=True, sn=True)确实只能返回完整的场景路径,不过我们可以借助Python的标准库或者简单的字符串处理来提取出你要的纯场景名,这里给你两种靠谱的方法:
方法一:用Python的os.path模块(推荐)
这个方法最稳妥,能兼容Windows/OSX/Linux各种路径格式,还能完美处理文件名里带小数点的特殊情况:
import os import maya.cmds as cmds # 获取完整场景路径 full_path = cmds.file(query=True, sceneName=True) if full_path: # 先提取带扩展名的文件名,再剥离扩展名 scene_name = os.path.splitext(os.path.basename(full_path))[0] print(f"当前场景纯名称:{scene_name}") else: print("提示:当前场景还未保存,请先保存后再获取名称!")
步骤拆解:
os.path.basename(full_path):从完整路径里取出最后一段(带扩展名的文件名),比如把/Users/me/scenes/My_Project_v001.ma变成My_Project_v001.maos.path.splitext(...):把文件名和扩展名拆成元组(文件名, 扩展名),取第一个元素就得到不带后缀的纯场景名
方法二:纯字符串分割(简单但有局限性)
如果你的场景文件名里不会出现除扩展名外的小数点,也可以用这种更简洁的方式:
import maya.cmds as cmds full_path = cmds.file(query=True, sceneName=True) if full_path: # 先按斜杠分割取最后一段,再按小数点分割取第一段 scene_name = full_path.split('/')[-1].split('.')[0] print(scene_name) else: print("当前场景未保存!")
⚠️ 注意:如果你的场景文件名是My.Scene.v001.ma,这种方法会错误地返回My,所以优先推荐方法一。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

