Nuke Python命令行传参的两种方案¶
后台调用Nuke的Python执行环境有三种方案,打开命令行窗口,下面的三句脚本都是可以打开Nuke的Python执行环境。
"C:\Program Files\Nuke10.5v1\python.exe" blablabla.py arg1 arg2 arg3
"C:\Program Files\Nuke10.5v1\Nuke10.5.exe" -t blablabla.py arg1 arg2 arg3
"C:\Program Files\Nuke10.5v1\Nuke10.5.exe" -x blablabla.py arg1 arg2 arg3
命令行窗口给py文件传参有两种方案,一种最普通的方式是通过sys.argv来获取参数,但是在三种执行环境中都有一些问题,第一种执行环境下blablabla.py文件中import nuke和sys.argv得有先后顺序。
import sys
print(sys.argv)
import nuke
print(nuke.__file__)
上面的代码是可以正常传递命令行参数的,但下面这种情况就不行,你会得到空列表。
import sys
import nuke
print(sys.argv)
print(nuke.__file__)
第二种和第三种执行环境下不存在这样的问题,但是对于数字的参数,它会遇到警告,这种参数通过sys.argv存储不了。比如:
"C:\Program Files\Nuke10.5v1\Nuke10.5.exe" -t blablabla.py 101 200
WARNING: The command line argument ‘ 101 200’ will be used as a Frame Range argument and will not be forward to the python sys.argv. To define a frame range argument use the -F option.
此时可以通过nuke.rawArgs来获取就是OK的。