You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于subprocess命令输出的1或0创建关联的布尔变量?

如何根据ping命令的输出创建布尔变量

你现在用subprocess.call的方式不对,因为这个函数返回的是命令的退出状态码(0代表命令执行成功,非0代表失败),不是终端里打印的那个'1'或'0'。要拿到命令的输出内容,得换用能捕获标准输出的方法,比如subprocess.run。

正确做法示例:

import subprocess

# 执行命令并捕获输出
result = subprocess.run(
    "ping 192.168.1.127 -c 1 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'",
    shell=True,
    capture_output=True,
    text=True
)

# 提取输出内容,去掉多余的换行符
output = result.stdout.strip()

# 转成整数后再转布尔变量:1对应True(网络可达),0对应False(不可达)
is_reachable = bool(int(output))

print(f"命令输出内容: {output}")
print(f"目标是否可达: {is_reachable}")

补充说明:

  • capture_output=True:用来捕获命令的标准输出和错误输出
  • text=True:让输出直接以字符串形式返回,无需手动解码字节流
  • 如果担心命令执行出错(比如ping失败导致没匹配到'received'字段),可以先判断result.returncode是否为0,确保命令执行成功后再处理输出。

内容的提问来源于stack exchange,提问作者chiques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:55:27