【发布时间】:2012-09-14 08:47:34
【问题描述】:
我正在尝试将 xinput 的输出流式传输到我的 python 程序中,但是我的程序只是等待并保持空白。我认为这可能与缓冲有关,但我不能说。运行xinput test 15 让我的鼠标移动,但这样做不会打印它。顺便说一句,要找出您的 mouseid,只需输入xinput,它就会列出您的设备。
#!/usr/bin/env python
import sys
import subprocess
# connect to mouse
g = subprocess.Popen(["xinput", "test", str(mouse_id)], stdout=subprocess.PIPE)
for line in g.stdout:
print(line)
sys.stdout.flush()
【问题讨论】:
-
输出中是否有换行符?如果您在一段时间后终止子进程会发生什么?冲洗
g.stdout有效果吗? -
xinput test为每个事件返回一个新行,而对于终止它只会给键盘中断 啊哈,我认为您对g.stdout.flush()的更改产生了影响。它现在输出,哇! -
现在唯一的问题是刷新需要几秒钟,这意味着为了进行测试,我必须获取数百甚至数千行,直到它们全部转储。无论如何,只要我能得到它就强制立即转储(从控制台运行命令时没有延迟)
标签: python linux input pipe xorg