Maya Python Playblast按文件同名保存到指定文件夹的实现问题
Maya Playblast 按当前文件名保存到指定路径实现方案
原有代码问题说明
cmds.playblast参数语法错误,参数需要放在函数调用的括号内,不能拆分后无缩进- 路径与变量拼接直接硬写不符合Python语法,需要用路径拼接方法处理
- 无目录存在性校验,目标文件夹不存在时会导出失败
实现代码
import maya.cmds as cmds import os # 获取当前Maya文件信息 filepath = cmds.file(q=True, sn=True) # 处理未保存的空场景情况 if not filepath: cmds.warning("当前场景未保存,请先保存Maya文件后再执行") raise RuntimeError("场景未保存") filename = os.path.basename(filepath) raw_name, extension = os.path.splitext(filename) # 如果你确实需要把文件名最后一个字符替换为空格,保留下面这行,否则可以删除直接用raw_name name = raw_name.replace(raw_name[-1::], ' ') # 指定你要保存的根目录,用r前缀避免Windows路径转义问题 save_root = r"C:\Users\Julio\Desktop\test\row" # 拼接完整输出路径,后缀可以根据你需要的格式修改为mov/avi等 output_path = os.path.join(save_root, f"{name}.mp4") # 校验目标目录是否存在,不存在则创建 if not os.path.exists(save_root): os.makedirs(save_root) def test(): # playblast 常用参数可以根据自己需求调整,比如分辨率、帧范围、格式等 cmds.playblast( fileName=output_path, format="video", forceOverwrite=True, percent=100, showOrnaments=False, viewer=False ) test()
核心逻辑说明
- 路径拼接使用
os.path.join()方法,自动适配不同系统的路径分隔符,避免手动拼接出现的转义、分隔符错误问题 - 新增了场景未保存的校验逻辑,避免空场景获取文件名失败报错
- 新增目录自动创建逻辑,不需要手动提前建文件夹
- playblast的参数可以根据你自己的需求调整,比如添加
startTime、endTime指定导出帧范围,添加width、height指定导出分辨率等
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

