【发布时间】:2017-12-21 11:50:00
【问题描述】:
我想通过将一些 PYTHON 代码的输出传递给“whiptail”来在无头 linux 服务器上使用 TUI(文本用户界面)。不幸的是,whiptail 似乎什么也没有发生。当我通过管道从常规 shell 脚本输出输出时,whiptail 工作正常。这是我所拥有的:
data-gen.sh
#!/bin/bash
echo 10
sleep 1
echo 20
sleep 1
...
...
echo 100
sleep 1
$ ./data-gen.sh | Whittail --title "TEST" --gauge "GAUGE" 0 50 0
我得到下面的进度条按预期递增。
现在我尝试从 python 复制同样的东西:
data-gen.py
#!/usr/bin/python
import time
print 10
time.sleep(1)
...
...
print 100
time.sleep(1)
$ ./data-gen.py | Whittail --title "TEST" --gauge "GAUGE" 0 50 0
我得到以下进度条保持在 0%。没有看到增量。一旦后台的 python 程序退出,Whiptail 就会退出。
任何想法如何让 python 输出成功地通过管道传输到whiptail?我没有用对话框尝试过这个;因为我想坚持使用大多数 ubuntu 发行版上预装的whiptail。
【问题讨论】:
-
值得将
print 20; time.sleep(1)添加到python脚本。在我的机器上data-gen.sh使进度条逐渐移动,但data-gen.py使它立即从 0 跳到 100。 -
试试
unbuffer ./data-gen.py | whiptail --title "TEST" --gauge "GAUGE" 0 50 0 -
或
python -u ./data-gen.py | whiptail --title "TEST" --gauge "GAUGE" 0 50 0。 -
谢谢 Arkadiusz .. python -u ./data-gen.py |鞭尾……工作得很好。无论如何要从 python 代码本身中执行此 unbuffer 输出?
-
我将命令转换为答案。你可以在 shebang 中使用
-u。
标签: python linux bash dialog whiptail