我正在使用以下py脚本并使用以下时髦脚本触发它。触发本身由groovy b.jenkinsfile
完成:
a.py - Python 2.7
import sys
def main(x):
print x
return 2
if __name__ == '__main__':
main(sys.argv[1:])
b.詹金斯文件 - 时髦
def cmd = ["python", "a.py", "arg"]
def func = cmd.execute()
func.waitForOrKill(10000)
println func.text
func.dump()
println func
我得到的输出是 ["arg"],这大约是我预期的(实际上没有 [] 就预料到了,但这无关紧要(。
我似乎无法获得对象的实际返回值。 为什么text
/dump
/func 本身不会给出返回值?
也尝试了return main(sys.argv[1:])
而不是普通的呼叫main
,但由于某种原因,这抑制了我的打印 x......
要获取退出值,请使用func.exitValue()
。
方法execute()
返回由Groovy使用其他方法扩展的Process对象实例
您拥有的[]
括号,因为在 Python 中您正在访问从第一个参数开始的参数子列表:
sys.argv[1:]
一旦这个访问器返回一个列表(即使只有一个元素( - 它在输出时用[]
包装。
如果您只想获得一个元素使用
sys.argv[1]
您希望函数返回的值main()
作为返回代码传递给操作系统。
其实不然。您需要将其显式传递给操作系统。
rc = main(sys.argv[1:])
sys.exit(rc)
你得到了["arg"]
,因为sys.argv[1:]
要求sys.argv
的切片(即子列表(。如果您只需要一个元素,请使用选择元素 1 的 sys.argv[1]
。