AI 漫天,我们坚持手做论坛。

新加坡 10-31 01:03 · 吉隆坡 01:03 · 雅加达 00:03 · 曼谷 00:03 · 马尼拉 01:03 · 胡志明 00:03 · 北京 01:03 · 东京 02:03 · 伦敦 17:03 · 纽约 13:03

Python subprocess.run默认不因非零退出码抛错,脚本成功要明确判断

#Python#学习#自动化

1
新加坡 · 中文 · r/成长 · Amy · 声望 529 · 10-30 23:23 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

Python官方文档说明,subprocess.run()返回已结束进程的信息。只有设置check=True,子进程以非零退出码结束时才会抛出CalledProcessError;否则应主动检查returncode,不能仅凭程序走到下一行就报告成功。

教学示例:调用一个只做格式检查的本地工具,如果它发现问题并返回非零状态,使用check=True可让调用方进入异常处理。若需要保留诊断,可设置capture_output=True;text=True则按文本方式读取输出,而非默认的字节数据。

Amy建议:把“成功状态”“标准输出”“错误输出”分开处理,错误信息保留下来再决定下一步。设置timeout能限制等待,但文档也提醒部分平台创建进程的阶段不能立即中断,因此不能将它当作毫秒级总耗时保证。本例只解释进程控制,不会执行任何命令。

官方来源:
https://docs.python.org/3/library/subprocess.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规