如何在 when 运行 python 脚本中从另一个脚本中获取正确的退出代码?

How to get correct exitcode in when running python script from another Script?

我有一个文件one.py

import sys
sys.exit(-23)

当我使用两者从另一个文件调用它时

ans = subprocess.call("python c:\python27\one.py")
                  or 
ans = os.system("python c:\python27\one.py")

它 returns 我的值为“2”,我希望值为 -23。

我们怎么做?

编辑:有人将此标记为另一个问题的可能副本..这是一个bash脚本但实际上这个问题与python和它调用了退出代码的工作方式.. 如何 运行 另一个 python 脚本有很多答案但没有人讨论过退出代码.. 事实上我在问问题之前正确搜索了那个

你有两个问题

1) 您使用负退出代码,但并不总是可行。您可能会得到 233 作为退出代码(退出代码被视为无符号字节,因此它可以在 0 - 255 之间)

2) 当你 运行 时你会得到一个错误,因为你试图以 shell 的形式 运行 它,你可以使用

ans = subprocess.call(['python',r"c:\python27\one.py"]) # This r before addr. is important.. else you will still get the same value

或不太推荐的方式shell=像这样的真论点

ans = subprocess.call(r"python c:\python27\one.py", shell=True)

但由于安全问题不推荐这样做(如果用户输入会影响您的命令)