0

我试图设置一个环境变量,但由于访问被拒绝而失败,但是,try-except 块没有将此视为错误。我可以自己捕获退出代码,然后检查退出代码是否不同于 0,但我希望有一种更 Pythonic 的方式是可能的。

这是我尝试过的执行:

try:
    exit_code = subprocess.call(["SETX", "-m", "ENV_VAR", "Test"])
    print 'exit_code: {}'.format(exit_code)  # for debugging purposes
except Exception:
    raise Exception("Could not set environment variable")

结果是这样的:

ERROR: Access to the registry path is denied.
exit_code: 1

Process finished with exit code 0

如您所见,从 subprocess.call 返回的退出代码为 1,表示失败,但是,整个 Python 进程以退出代码 0 退出,并且从未调用过“引发异常”。

解决它的最佳方法是什么?

4

1 回答 1

0

感谢Alex K.指出正确的用法。固定代码:

try:
    subprocess.check_call(["SETX", "-m", "ENV_VAR", "Test"])
except subprocess.CalledProcessError:
    raise Exception("Could not set environment variable")
于 2018-06-26T13:32:07.253 回答