cmder 下使用 you-get 的进度条的困惑

2017-02-10 22:53:16 +08:00
 imupdate
在 cmder 下面,执行 you-get 。其进度条如下
2.7% ( 28.8/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.8% ( 29.0/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.8% ( 29.2/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.8% ( 29.5/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.8% ( 29.8/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.9% ( 30.0/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.9% ( 30.2/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.9% ( 30.5/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
2.9% ( 30.8/1050.6MB) ├█────────────────────────────────────┤[ 1/28]
3.0% ( 31.0/1050.6MB) ├██───────────────────────────────────┤[ 1/28]
3.0% ( 31.2/1050.6MB) ├██───────────────────────────────────┤[ 1/28]
直至 100%,而 linux 下面就是一条。何解?
2821 次点击
所在节点    问与答
8 条回复
author
2017-02-10 23:07:36 +08:00
是回车符问题吗? Linux 下把终端调到宽度很小,估计也是很多条
Kisesy
2017-02-10 23:24:59 +08:00
应该是命令行缓冲区的问题
如果想要实现单行更新,一般是直接写 stdout ,并且写的时候前面加转义符 \r,比如:
sys.stdout.write('\r' + bar)
这时候后面不要跟 sys.stdout.flush()
不然就强制刷新了,这样就会产生多行了
我看 you-get 的代码就写了 flush ,所以才会出现这种差异吧
Kisesy
2017-02-10 23:32:50 +08:00
唉,好像说错了,应该是可以加 sys.stdout.flush() 的,记错了。。。
DiamondbacK
2017-02-10 23:35:41 +08:00
cmder + you-get 0.4.626 ,没有遇到过这个问题。
ovear
2017-02-11 00:40:29 +08:00
解决方法是把对话框拉宽一点 =、=
imupdate
2017-02-11 08:13:08 +08:00
@Kisesy 作为使用者,基本上做不了什么喽?
xmoiduts
2017-02-11 11:58:51 +08:00
@ovear 实测有用
imupdate
2017-02-11 12:23:55 +08:00
@xmoiduts 我试了,好像不行唉。

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

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

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

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

© 2021 V2EX