我试图将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()
您的代码适合我;但是如果没有连接到tty,
xinput
cmd会缓冲其输出。在运行代码时,继续移动鼠标,最终xinput
应该刷新stdout,您将看到您的行以块形式显示。。。至少我在运行你的代码时做了。在我重新编写了您的代码以消除缓冲,但我无法使它不分块地出来,因此我认为
xinput
是罪魁祸首。当没有连接到TTY时,它不会用每个新事件刷新stdout缓冲区。这可以用xinput test 15 | cat
来验证。移动鼠标将导致数据以缓冲块的形式打印;就像您的代码一样。在如果有帮助,我的测试代码如下
看看sh,特别是本教程http://amoffat.github.com/sh/tutorials/1-real_time_output.html
相关问题 更多 >
编程相关推荐