如何解决Python 子进程 ping -h 返回退出状态 2
我想使用 Python 捕获 ping -h
输出,它导致退出状态 2。
我在 Linux 主机上工作。
import subprocess
class Network_Ping ():
def Get_Ping_Help(self):
res = subprocess.check_output(['ping','-h'],universal_newlines = True)
print (res)
def main():
obj = Network_Ping()
obj.Get_Ping_Help()
if __name__ == "__main__":
main()
这是输出
`Traceback (most recent call last):
File "Network_Ping.py",line 42,in <module>
main()
File "Network_Ping.py",line 35,in main
obj.Get_Ping_Help()
File "Network_Ping.py",line 20,in Get_Ping_Help
res = subprocess.check_output(['ping',universal_newlines = True)
File "/usr/lib/python3.8/subprocess.py",line 411,in check_output
return run(*popenargs,stdout=PIPE,timeout=timeout,check=True,File "/usr/lib/python3.8/subprocess.py",line 512,in run
raise CalledProcessError(retcode,process.args,subprocess.CalledProcessError: Command '['ping','-h']' returned non-zero exit status 2.`
该命令似乎在 shell 上正常执行。这个错误的原因是什么?我该如何解决?
解决方法
遵循 Barmar 解决方案
ping 是正常的行为,但是shell 不显示; Shell 不返回退出状态。我们可以通过以下方式查看:
ping -h;echo $?
为了避免检查退出状态,我们可以将 subprocess.check_output()
替换为 subprocess.run()
并成功捕获输出。
res = subprocess.run(['ping','-h'],capture_output=True,text = True)
print(res.stderr)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。