python - 在python中捕获linux终端响应
问题描述
我正在修改各种 linux 终端(例如 xterm、gnome-terminal 等)中的 VT100 仿真,并且需要帮助以获取 python 脚本以从仿真器接收不可打印的转义序列。我想我掌握了 VT100 仿真部分;这是一个关于python的问题。
我想在 python 中运行以下 VT100“识别终端类型”查询:
print "\x1b[c"
resp = raw_input()
print ":".join(x.encode('hex') for x in resp) # debugging purpose only
我几乎可以很好地使用终端的 VT100 仿真,除了resp = raw_input()
需要我通过按键手动完成响应ENTER
。
如何让 python 在我没有手动干预的情况下从 VT100 仿真中获取输入?
解决方案
这行得通吗?
import subprocess
proc = subprocess.Popen(["echo \x1b[c"], stdout=subprocess.PIPE, shell=True)
resp, err = proc.communicate()
print (":".join(hex(x) for x in resp)) # debugging purpose only
它在python3中,但我相信你可以在2中做大致相同的事情
编辑:
这更好:
import subprocess
resp = subprocess.check_output("echo \x1b[c", shell=True)
print (":".join(hex(x) for x in resp)) # debugging purpose only
推荐阅读
- c - 以 i++ 为条件的 C for 循环的奇怪行为
- google-maps - 谷歌地图 API 不会显示
- javascript - 字符串中的双括号模式搜索
- c# - Web 服务内部不同的soap:address。如何调用方法
- c# - 在 VB.NET 中传递给函数时声明参数
- node.js - 由于 SELF_SIGNED_CERT_IN_CHAIN,Expo 无法更新 npm 包
- docker - 使用 nginx、kubernetes 和 docker 服务资产
- c++ - Must a compiler always remove a try-catch block if it's proven to be non-throwing
- java - Java中的10,000,000个整数数组插入排序
- mysql - MySQL 数据库 Show Lik 'רולר חו×'