Running List Of Cmd.exe Commands From Maya In Python
I am writing a maya python script to batch render a scene into jpgs then use ffmpeg to turn them into a mov. Currently the script saves a string of commands as a bat file which wor
Solution 1:
first_process = subprocess.Popen(r'RenderCommand', stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True )
first_out,first_err = first_process.communicate()
first_exicode = first_process.returncode
print(first_out)
ifstr(first_exicode) != '0':
print(first_err)
second_process = subprocess.Popen(r'SecondCommand', stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True )
second_out,second_err = second_process.communicate()
second_exicode = second_process.returncode
print(second_out)
ifstr(second_exicode) != '0':
print(second_err)
third_process = subprocess.Popen(r'ConvertCommand', stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True )
third_out,third_err = third_process.communicate()
third_exicode = third_process.returncode
print(third_out)
ifstr(third_exicode) != '0':
print(third_err)
Important note:
During the execution of each Popen(), Maya's GUI will be frozen. This can be really inconvenient especially if you have a lot of frames to render.
I'd recommand you to separate your Render and Convert calls from your main script to avoid this.
You can do it this way:
In your main script (where you would have called your Popen()
:
subprocess.Popen(r'mayapy.exe R:\paul\Trash\render_and_convert.py 50 100 150', False)
This command will not freeze Maya's GUI. You can pass arguments from your main script to render_and_convert.py
(file paths, start/end frames, etc...)
render_and_convert.py:
import sys
import subprocess
import maya.standalone as std
std.initialize(name='python')
import maya.cmds as cmds
import maya.mel as mel
# store the arguments in variables
first_argument = sys.argv[1] # =50
second_argument = sys.argv[2] # =100
third_argument = sys.argv[3] # =150
first_process = subprocess.Popen(r'RenderCommand ' + first_argument + ' ' + second_argument,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True )
first_out,first_err = first_process.communicate()
first_exicode = first_process.returncode
print(first_out)
ifstr(first_exicode) != '0':
print(first_err)
second_process = subprocess.Popen(r'SecondCommandWithoutArgs', stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True )
second_out,second_err = second_process.communicate()
second_exicode = second_process.returncode
print(second_out)
ifstr(second_exicode) != '0':
print(second_err)
third_process = subprocess.Popen(r'ConvertCommand ' + third_argument,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True )
third_out,third_err = third_process.communicate()
third_exicode = third_process.returncode
print(third_out)
ifstr(third_exicode) != '0':
print(third_err)
Post a Comment for "Running List Of Cmd.exe Commands From Maya In Python"