【发布时间】:2021-09-01 17:09:28
【问题描述】:
我想从使用 subprocess 模块执行的失败 Python 脚本中获取完整的描述性错误消息。
我有一个以下脚本 sub_script.py 在单独执行时失败并产生 IndexError: pop from empty list 错误:
# sub_script.py
empty_list = []
empty_list.pop()
我从sub_test.py 拨打sub_script.py 如下:
# sub_test.py
import subprocess
import sys
print(str(subprocess.run([sys.executable, 'sub_script.py'],
check=True,
capture_output=True)))
但是我只收到subprocess.CalledProcessError 错误。
Traceback (most recent call last):
File "/Users/my_user/Desktop/my_dir/sub_test.py", line 4, in <module>
print(str(subprocess.run([sys.executable, 'sub_script.py'],
File "/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/subprocess.py", line 528, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/local/opt/python@3.9/bin/python3.9', 'sub_script.py']' returned non-zero exit status 1.
我希望看到当sub_script.py (IndexError: pop from empty list) 使用sub_test.py 中的子进程执行时返回的错误的完整描述。
当脚本在subprocess.run 内执行并失败时,是否可能出现完全错误?
【问题讨论】:
-
这回答了你的问题? stackoverflow.com/questions/24849998/…
-
我已经试过了,它仍然返回
subprocess.CalledProcessError而不是IndexError: pop from empty list -
您是否尝试过从
subprocess.run()捕获stdout和stderr? -
如果你想真正有一个IndexException,你必须导入文件并通过python而不是子进程来完成,如果你只想要错误的输出,链接应该可以工作。跨度>
-
我必须使用子进程,我无法导入文件@T.Kelher
标签: python python-3.x subprocess