gpt4 book ai didi

python从shell命令输出中读取

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:34 25 4
gpt4 key购买 nike

我理解您可能认为这是一个重复的问题,但到目前为止我还没有找到解决我自己问题的方法。

目前,我有一个 C 程序不断生成数据流。我希望有一种方法可以让我的 python 程序读取这些数据,这样我就不必用 C 语言完成所有事情。

C程序主要感觉是这样的:

int i = 0;
while(1){
printf("%d %d\n", i, i+1);
i++;
}

我阅读并尝试了Python中的子进程,似乎它们都需要等待命令完成。(例如:Constantly print Subprocess output while process is running)我希望有一些缓冲机制,这样我就可以记录这个位流并按行处理它线。谢谢。

几个假设:

1) 处理过的行可以被丢弃

2) 缓冲区/队列大小没有问题,因为我可以控制源代码的速率以匹配 python 程序的处理速度。

更多背景信息:C 程序基本上驱动相机输入(这就是它用 C 编写的原因),执行一些 OpenCV 操作并输出对象位置 (x, y) int 值。python程序需要这个位置来进行一些进一步的处理。

谢谢。

最佳答案

下面是使用 subprocess 模块逐行处理 C(或 shell)程序输出的方法:

from subprocess import Popen, PIPE
# Set up the process
p = Popen("yourprogram", stdout=PIPE, close_fds=True)
count = 0
while True:
count += 1
print '%s: %s' % (count, p.stdout.readline().strip())

出于演示目的,yourprogram 可以是一个简单的 shell 脚本(设置了可执行位):

#!/bin/sh
while sleep 1s
do
date
done

运行 python 程序会产生:

$ python test.py
1: Thu Dec 5 23:31:45 PST 2013
2: Thu Dec 5 23:31:46 PST 2013
3: Thu Dec 5 23:31:47 PST 2013
4: Thu Dec 5 23:31:48 PST 2013
5: Thu Dec 5 23:31:49 PST 2013
6: Thu Dec 5 23:31:50 PST 2013
7: Thu Dec 5 23:31:51 PST 2013

它会一直持续到您终止为止。

关于python从shell命令输出中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com