我试图设置一个环境变量,但由于访问被拒绝而失败,但是,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 退出,并且从未调用过“引发异常”。
解决它的最佳方法是什么?