gpt4 book ai didi

python - 子进程不引发 CalledProcessError

转载 作者:行者123 更新时间:2023-12-01 03:56:11 24 4
gpt4 key购买 nike

我有一个脚本循环遍历几个文件路径,以便使用子进程执行一些其他 python 和 bash 脚本。

我知道这些脚本偶尔会失败,我想捕获异常并停止循环/退出调用脚本。这看起来应该很简单 - 但我很想让它发挥作用。

我尝试了许多子流程方法,但我似乎无法从其中任何一个(callcheck_call)中捕获 CalledProcessErrorcheck_outputPopen)。

# calling.py

for script in ['w', 'x', 'y']:
try:
subprocess.check_output('ipython {}.py'.format(script).split())
except subprocess.CalledProcessError as e:
print "Caught CalledProcessError"
raise
except Exception as e:
print "Caught some other exception"
raise

现在想象第一个脚本抛出异常。我希望它导致调用脚本退出。

# w.py

print "w"
a = {}
a[0] # KeyError

相反,调用脚本不会捕获任何异常,并且调用脚本会继续循环。

$ ipython calling.py
w
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/Users/h138124/git/exceptional/w.py in <module>()
1 print "w"
2 a = {}
----> 3 a[0]

KeyError: 0
x
y

最佳答案

我遇到了完全相同的问题,并开始调试 subprocess.py。

然后我意识到我从未到达 subprocess.run() 函数中的断点。

然后我想到,我不久前确实安装了 python35 的 subprocess.run 包。

删除包后它又可以工作了。

关于python - 子进程不引发 CalledProcessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com