使用子进程获取返回值

Dav*_*542 17 python subprocess

我希望能够通过脚本的返回值来定义变量.这就是我目前拥有的:

sum_total_earnings_usd = subprocess.call([SCRIPT, "-d", date])
Run Code Online (Sandbox Code Playgroud)

我已经检查了SCRIPT的返回值,但是,当我尝试设置此变量时,它总是返回0(http://docs.python.org/library/subprocess.html#subprocess.call).我如何运行此脚本并捕获返回值以存储为变量?

小智 26

subprocess.check_output()而不是subprocess.call().

  • 请注意,[返回值](https://en.wikipedia.org/wiki/Exit_status) 与程序的输出不同,这正是您在此处尝试获得的。返回值为零,因为按照惯例,零表示脚本运行成功并且没有错误。程序的输出是它打印到 stdout(或可能是 stderr)的内容,并且通过重定向来获取此值,就像使用标准 unix 管道一样。 (3认同)

Mak*_*oto 6

如果您的脚本返回值,那么您可能希望使用subprocess.check_output():

subprocess.check_output([SCRIPT, "-d", date], shell=True).
Run Code Online (Sandbox Code Playgroud)

subprocess.check_call() 从脚本中获取最终返回值,0通常表示"脚本已成功完成".