python – 与subprocess.check_call相比有什么好处,它返回stdout的内容?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 与subprocess.check_call相比有什么好处,它返回stdout的内容?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1224字,纯文字阅读大概需要2分钟。
内容图文
我想要一个匹配subprocess.check_call接口的好方法 – 也就是说,当它失败时抛出CalledProcessError,是同步的,& c – 而不是返回命令的返回码(如果它甚至这样做的话) )返回程序的输出,只有stdout或(stdout,stderr)的元组.
有人有这样做的方法吗?
解决方法:
Python 2.7
from subprocess import check_output as qx
Python< 2.7 从subprocess.py开始:
import subprocess
def check_output(*popenargs, **kwargs):
if 'stdout' in kwargs:
raise ValueError('stdout argument not allowed, it will be overridden.')
process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
output, unused_err = process.communicate()
retcode = process.poll()
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
raise subprocess.CalledProcessError(retcode, cmd, output=output)
return output
class CalledProcessError(Exception):
def __init__(self, returncode, cmd, output=None):
self.returncode = returncode
self.cmd = cmd
self.output = output
def __str__(self):
return "Command '%s' returned non-zero exit status %d" % (
self.cmd, self.returncode)
# overwrite CalledProcessError due to `output` keyword might be not available
subprocess.CalledProcessError = CalledProcessError
有关可能的check_output()实现的另一个示例,另请参见Capturing system command output as a string.
内容总结
以上是互联网集市为您收集整理的python – 与subprocess.check_call相比有什么好处,它返回stdout的内容?全部内容,希望文章能够帮你解决python – 与subprocess.check_call相比有什么好处,它返回stdout的内容?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。