여러 표준 출력을 Python 프로그램에 파이프로 연결하시겠습니까?

여러 표준 출력을 Python 프로그램에 파이프로 연결하시겠습니까?

stdout으로 인쇄하는 프로그램이 있는데, 각 인스턴스의 stdout이 sed로 파이프된 다음 결과(3개 sed)가 Python 프로그램으로 파이프되는 여러 인스턴스를 갖고 싶습니다. 나는 이것을하고있다

rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle1' | python calc.py

이것은 하나의 인스턴스에서는 효과가 있었지만 이제는 다음과 같은 3개의 인스턴스가 있습니다.

rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle1' 
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle2' 
rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -i '/2024-03-25/a \ dongle3' 

나는 그것들을 모두 같은 인스턴스로 calc.py(동시에) 연결하여 몇 가지 계산을 할 수 있기를 원합니다. PS FIFO 및 파일 쓰기는 계산이 실시간으로 수행되고 스트리밍 출력도 rtl_power있기

편집하다:

콘솔 탭 1:

rtl_power -f 430M:434M:3.2M -g 30 -i 2 | sed -u '/2020-03-26/a \ dongle1' > /home/username/gatewayx

콘솔 탭 2:

python /home/username/do.py < /home/username/gatewayx

산출

2
device dongle1 strength -29.04

2020-03-26, 13:49:38, 430000000, 433200000, 3200000.00, 186, -29.04, -29.04
8
2
device dongle1 strength -29.04

2020-03-26, 13:49:40, 430000000, 433200000, 3200000.00, 295, -29.04, -29.04
8
2
device dongle1 strength -29.04

2020-03-26, 13:49:42, 430000000, 433200000, 3200000.00, 302, -29.04, -29.04
8
2
device dongle1 strength -29.04

2020-03-26, 13:49:44, 430000000, 433200000, 3200000.00, 303, -29.04, -29.04
8
2
device dongle1 strength -29.03

2020-03-26, 13:49:46, 430000000, 433200000, 3200000.00, 295, -29.03, -29.03

(이때 출력을 정지합니다)

참고용 Python 스크립트:

import time
import datetime
import sys

def printthis(Var):
    print Var
while True:
    donglename="emptry"
    dbs="emptry"
    line=sys.stdin.readline()
    if not line:
        continue
    conts=line.split(' ')   
    ll=len(conts)
    print(ll)
    if len(conts)==8:
        #donglename=conts[8]
        #donglename=donglename.replace('\n','')
        dbs=conts[7]
        dbs=dbs.replace(',','')

    line2=sys.stdin.readline()
    if not line2:
        continue
    conts2=line2.split(' ') 
    ll2=len(conts2)
    print(ll2)
    if len(conts2)==2:
        donglename=conts2[1]
        donglename=donglename.replace('\n','')
        #dbs=conts[7]
        #dbs=dbs.replace(',','')

    print("device "+donglename+" strength "+dbs)


    sys.stdout.write(line)
    sys.stdout.flush()
    time.sleep(1)


관련 정보