Python 스크립트를 Lemon Bar에 파이프하는 방법은 무엇입니까?

Python 스크립트를 Lemon Bar에 파이프하는 방법은 무엇입니까?

안녕하세요 저는 레몬 바를 만들고 있는데 프로그램이 루프와 그 안에서 진행되는 스레딩을 관리하기를 원하기 때문에 Python, Go, C 또는 쉘 스크립트 이외의 언어로 만들고 싶습니다.

예를 들어 내가 호출하는 스크립트를 만들 수 있다는 것을 알았습니다. 루프의 각 반복마다 Python 스크립트가 사용됩니다.

bar.sh

while true
do
    python script.py
    sleep 1
done

이후script.py

print('%{c}hello')

그럼 난 이렇게 실행

sh bar.sh | lemonbar

이것은 효과가 있었고 나는 hello바 중앙에 하나를 얻었습니다. 하지만 나는 이런 일을 하고 싶다.

bar.py

while True:
    print('%{c}hello')

레몬바에 파이프로 연결해

python bar.py | lemonbar

이것은 작동하지 않습니다. 바가 있는데 거기에 아무것도 없어요.

내 생각엔 이것이 내 쉘에서 사용하는 파일 설명자와 비교하여 Python 인쇄 기능에서 사용하는 파일 설명자와 관련이 있는 것 같습니다.zsh

편집하다:나도 시도했다

import sys, time

fd = sys.stdout

while True:
    fd.write('hej\n')
    time.sleep(1)

그것은 아무것도 바꾸지 않습니다.

제 질문을 읽어주셔서 감사합니다. 도움이 되셨으면 좋겠습니다 :)

답변1

실제로 누군가의 구현을 읽어서 이 작업을 수행하는 방법을 알아냈습니다.레몬바 모듈

import time
from subprocess import Popen, PIPE

fd = Popen('lemonbar', stdin=PIPE, stdout=PIPE, encoding='UTF-8')

while True:
    time.sleep(1)
    fd.stdin.write('%{c}hello')
    fd.stdin.flush()
    print(fd.stdout.read())

비결은 파일 설명자를 작성한 후 플러시하는 것입니다.

그러니까 나도 할 수 있어

bar.py

import time 
import sys
fd = sys.stdout
while True:
    fd.write("%{c}hello")
    fd.flush()
    time.sleep(1)

그런 다음 평소대로 실행하십시오.

python bar.py | lemonbar

관련 정보