Python3 上实现命令行环境的多行独立进度条

2016-11-05 22:39:04 +08:00
 Yinz

reprint 是一个适用于 Python3 的简易变量绑定与多行输出刷新的库

能够以优雅的方式实现多行独立进度条与多线程状态监控

特性

项目地址 https://github.com/Yinzo/reprint

之前用 Docker pull image 的时候看到 Docker 的多行独立刷新,就觉得很酷。结果 Google 了很多也没找到 Python 上实现的方法,都是只能重复刷新同一行而不能刷新多行。于是突发奇想,通过手动填充 padding 来实现『伪多行』,然后封装成一个库,让使用更加优雅,最终成为了 reprint 这个库 :D

5525 次点击
所在节点    分享创造
9 条回复
qweweretrt515
2016-11-06 01:06:43 +08:00
可以参考下 npm
Yinz
2016-11-06 01:54:47 +08:00
@qweweretrt515 平时不怎么写 JS
npm 也用到了类似的多行输出吗:D
试了一下 install 似乎没有?还是说我姿势不对
qweweretrt515
2016-11-06 09:42:30 +08:00
@Yinz 好像是 cnpm 它的进度条很不错
imcocc
2016-11-06 12:12:33 +08:00
楼主考虑过兼容 2.7 吗?
Yinz
2016-11-06 13:38:43 +08:00
@imcocc 我觉得没问题 :D
Yinz
2016-11-06 15:08:09 +08:00
@imcocc 0.1.0 版本已兼容 py2 :D
nfroot
2016-11-07 00:17:43 +08:00
"手动填充 padding"是什么意思 难道是其实数据上是一行 但是展示出来因为一行不够所以导致换行变成了多行?
Yinz
2016-11-07 13:28:49 +08:00
@nfroot 2333 对,实际上所有输出都在同一行,只是因为填充了 padding 超长而换行显示了而已,你可以改变一下窗口大小就能看出来了;D
liunx
2017-11-07 15:32:29 +08:00
"都是只能重复刷新同一行而不能刷新多行",博主,我想实现 5 个">"符号在输入屏幕上不断循环,代表程序正在运行状态,现在能有个简单的代码实现了,但当下一次重复是,实际上是使用 os.system('cls')把屏幕全部清空了再在原地方循环,可以有办法只刷新一行吗?因为我还想在屏幕显示另外的信息,不想被这个一并清空。代码如下:
import sys, time, os
i = 0
while i < 5:
sys.stdout.write('>')
sys.stdout.flush()
time.sleep(0.3)
i += 1
if i >= 5:
a = os.system('cls')
i = 0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318369

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX