首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能将python脚本输送到lemonbar呢?

我怎样才能将python脚本输送到lemonbar呢?
EN

Unix & Linux用户
提问于 2021-03-16 18:27:42
回答 1查看 269关注 0票数 0

嗨,我正在做一个柠檬条,我想用python或者go或者c或者其他什么东西来管理它,因为我想让程序来管理循环,以及在里面运行的线程。

我发现我可以在我打电话的地方写一个剧本。循环中每个项目中的python脚本,如下

bar.sh

代码语言:javascript
复制
while true
do
    python script.py
    sleep 1
done

然后是script.py

代码语言:javascript
复制
print('%{c}hello')

然后我像这样运行它

代码语言:javascript
复制
sh bar.sh | lemonbar

这很管用,我在酒吧中间得到了一个hello。但我想做这样的事

bar.py

代码语言:javascript
复制
while True:
    print('%{c}hello')

然后把它输送到柠檬酒吧

代码语言:javascript
复制
python bar.py | lemonbar

这不管用。我有酒吧但上面什么都没有。

我的猜测是,这与pythons打印函数使用的文件描述符相比,与shell zsh使用的文件描述符有关。

编辑:我也尝试过

代码语言:javascript
复制
import sys, time

fd = sys.stdout

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

但这并没有改变什么。

谢谢你阅读我的问题。我希望你能提供帮助:)

EN

回答 1

Unix & Linux用户

发布于 2021-03-16 19:01:37

实际上,我只是通过阅读某人如何实现柠檬酒吧模组来了解如何做到这一点

代码语言:javascript
复制
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

代码语言:javascript
复制
import time 
import sys
fd = sys.stdout
while True:
    fd.write("%{c}hello")
    fd.flush()
    time.sleep(1)

然后像往常一样运行

代码语言:javascript
复制
python bar.py | lemonbar
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/639609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档