尝试失败但代码不执行除外
try failing but except code not executing
我想要的是 运行 一个包含代码示例的脚本,如果 scriptc 没有 运行 只需将错误行附加到 stderr 文件并转储调用脚本。
我 运行 下面期望它尝试 运行 不存在的 scriptc,然后转储到异常并退出。但是它不会 运行 将异常代码写入 stderr 并且它不会退出()。它继续并 运行s 我不想 运行 的 scriptb 代码。有人可以告诉我我做错了什么吗?
try:
out=subprocess.run(["python3",'scriptc.py'],stdout=fout,stderr=ferr, universal_newlines=True)
except:
sys.stderr.write("scriptc not run \n")
sys.exit()
fout=subprocess.run(["python3",'scriptb.py'],stdout=fout,stderr=ferr, universal_newlines=True)
subprocess.run
如果进程运行 returns 非零状态代码,则不会引发异常,这里就是这种情况。
您应该调用返回的 CompletedProcess
对象的 check_returncode
方法来引发 CalledProcessError
异常:
out=subprocess.run(["python3",'scriptc.py'],stdout=fout,stderr=ferr, universal_newlines=True)
try:
out.check_returncode()
except subprocess.CalledProcessError:
sys.stderr.write("scriptc not run \n")
sys.exit()
我想要的是 运行 一个包含代码示例的脚本,如果 scriptc 没有 运行 只需将错误行附加到 stderr 文件并转储调用脚本。
我 运行 下面期望它尝试 运行 不存在的 scriptc,然后转储到异常并退出。但是它不会 运行 将异常代码写入 stderr 并且它不会退出()。它继续并 运行s 我不想 运行 的 scriptb 代码。有人可以告诉我我做错了什么吗?
try:
out=subprocess.run(["python3",'scriptc.py'],stdout=fout,stderr=ferr, universal_newlines=True)
except:
sys.stderr.write("scriptc not run \n")
sys.exit()
fout=subprocess.run(["python3",'scriptb.py'],stdout=fout,stderr=ferr, universal_newlines=True)
subprocess.run
如果进程运行 returns 非零状态代码,则不会引发异常,这里就是这种情况。
您应该调用返回的 CompletedProcess
对象的 check_returncode
方法来引发 CalledProcessError
异常:
out=subprocess.run(["python3",'scriptc.py'],stdout=fout,stderr=ferr, universal_newlines=True)
try:
out.check_returncode()
except subprocess.CalledProcessError:
sys.stderr.write("scriptc not run \n")
sys.exit()