我的问题是我想使用另一个 python 文件中的参数执行一个 python 文件以获取返回的值......
不知道我有没有解释清楚...
example:
从外壳我执行这个:
getCameras.py "path_to_the_scene"
这会返回给我一个相机列表......
那么我如何从另一个脚本调用这个脚本(包括参数)???
我一直试图通过阅读这里的其他一些问题来自己弄清楚,但我没有很好地理解,我应该使用 execfile() 函数吗?到底怎么样?
预先感谢您帮助像我这样的新手!
好的,在看了你的答案后,我必须编辑我的问题以使其更加简洁,因为我不明白一些答案(抱歉,就像我说的我是新手!!!):
我有两个脚本,getMayaCameras.py
and doRender.py
,还有一个,renderUI.py
,它在 GUI 中实现前两个脚本。
getMayaCameras.py
and doRender.py
这两个脚本都可以通过添加参数(或标志,在doRender.py
case),如果可能的话,我希望仍然有这种可能性,这样我就可以选择执行 UI 或直接从 shell 执行脚本。
我已经对它们进行了一些修改,以便通过从以下位置导入它们来工作renderUI.py
但现在他们不能自己工作了。
是否可以让这些脚本单独工作并且仍然可以从另一个脚本调用它们?具体如何?这“将逻辑与命令行参数处理分开”你之前告诉我的对我来说听起来不错,但我不知道如何在我的脚本上实现它(我尝试过但没有成功)。
这就是为什么我在这里发布原始代码,让您看看我是如何制作它的,请随意提出批评和/或更正代码,以解释我应该如何制作它以使脚本正常工作。
#!/usr/bin/env python
import re,sys
if len(sys.argv) != 2:
print 'usage : getMayaCameras.py <path_to_originFile> \nYou must specify the path to the origin file as the first arg'
sys.exit(1)
def getMayaCameras(filename = sys.argv[1]):
try:
openedFile = open(filename, 'r')
except Exception:
print "This file doesn't exist or can't be read from"
import sys
sys.exit(1)
cameras = []
for line in openedFile:
cameraPattern = re.compile("createNode camera")
cameraTest = cameraPattern.search(line)
if cameraTest:
cameraNamePattern = re.compile("-p[\s]+\"(.+)\"")
cameraNameTest = cameraNamePattern.search(line)
name = cameraNameTest.group(1)
cameras.append(name)
openedFile.close()
return cameras
getMayaCameras()