안녕하세요 저는 레몬 바를 만들고 있는데 프로그램이 루프와 그 안에서 진행되는 스레딩을 관리하기를 원하기 때문에 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