如何在Python中将Telnet输出存入变量并提取指定模拟输入数值
Python提取Telnet返回值中指定数值的方案
- 依赖说明:无需安装第三方库,直接使用Python内置的
telnetlib(负责Telnet连接交互)和re(负责正则匹配提取)即可实现 - 完整实现代码:
import telnetlib import re # 按需修改以下配置参数 TELNET_HOST = "设备实际IP地址" TELNET_PORT = 23 TELNET_TIMEOUT = 10 # 要执行的Telnet查询命令,按设备实际支持的命令调整 QUERY_COMMAND = b"你的查询命令\r\n" # 建立Telnet连接,获取返回文本 tn = telnetlib.Telnet(TELNET_HOST, TELNET_PORT, TELNET_TIMEOUT) # 若设备需要账号密码登录,在此处补充登录逻辑,示例如下: # tn.read_until(b"Username: ") # tn.write(b"你的账号\r\n") # tn.read_until(b"Password: ") # tn.write(b"你的密码\r\n") # 发送查询命令,读取全部返回结果 tn.write(QUERY_COMMAND) response_text = tn.read_all().decode("utf-8") tn.close() # 正则匹配提取目标数值 match_result = re.search( r'External alarm contact 2.*?Analog input value\s*([\d.]+)', response_text, flags=re.S ) if match_result: # 提取结果转浮点型存入变量 analog_value = float(match_result.group(1)) print(f"提取到的目标数值:{analog_value}") else: print("未匹配到目标值,请检查返回文本格式或正则规则")
- 逻辑说明:正则中
re.S参数允许.匹配换行符,适配目标字段跨行的场景,([\d.]+)用来捕获动态变化的浮点数值,若设备返回文本格式有调整,只需修改正则匹配规则即可。
内容的提问来源于stack exchange,提问作者Janidu Goonatilaka
相关产品推荐
相关产品推荐

