
[英]Using Python subprocess to keep track of files created by the executable
[英]Keep track of which files are created by a certain process
我正在使用Python(3.3)脚本运行一个命令,该命令将为动画电影渲染一堆图像文件。
在渲染时,它每次启动动画的新帧时都会创建一个空的图像文件,完成渲染该帧后,它将图像保存在该空文件上并移至下一帧。
python脚本通过使用以下命令运行另一个脚本来启动此渲染过程:
proc = subprocess.Popen(cmd, shell=True)
是否可以检查在此过程中创建了哪些文件?
原因是,有人可能希望在渲染完成之前停止渲染,但是这样做时,将留下一个空的图像文件。 我想让脚本按下红色的大“ 停止渲染”按钮时删除空白图像,但是我不能简单地删除所有空白图像,因为可能有其他计算机正在渲染-那里的空白图像是为了防止多台计算机渲染相同的图像框架(如果存在其图像文件,则跳过该框架)。
如果有帮助,则所有计算机都使用Windows 7,并且进行渲染的动画程序为Maya(2014)。
如果没有简单的方法,我很乐意使用任何丑陋的技巧来完成工作:)
如果在Maya中进行此操作,则可以使用Maya随附的mayapy交错器(而不是mayaBatch或maya -r)。 在独立版本中,您可以运行设置渲染,执行渲染以及对结果进行后处理所需的任何脚本。 至少可以让您一次处理一帧,并使用python一次提交一幅图像。
基本设置为:
创建一个Python脚本,该脚本可以执行所需的操作,并且可以在maya python interpeter中正常工作。 该脚本将像在maya侦听器中一样运行,因此您可以导入maya.cmds
并根据需要使用maya功能。
如果脚本需要命令行参数,请使用sys.argv检索它们。 运行脚本时,您传入的所有参数都将在sys.argv中可用。
通过导入maya.standalone
并调用它的initialize方法,您的脚本可以访问Maya的所有功能( 此处有更多详细信息)
从命令行运行Maya安装的bin文件夹中的mayapy.exe。 -s标志允许您指定要运行的脚本,因此您将在python脚本中作为参数传递,后跟所需的任何其他参数:诸如"path/to/mayapy.exe" -s "path/to/yourscript.py" arg1 arg2 arg3
。
对于更简单的操作,您可以使用ZeroMQ或RpyC之类的东西在Maya中运行rpc服务器。 您也可以使用WSGI服务器监听http端口来制作自己的服务器 。
您也可以查看3d party渲染管理系统。 有一些开源的人在这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.