各位大佬请进,有点小问题( Python \r)

2017-09-15 15:18:48 +08:00
 zbl430
In [13]: for i in range(1, 5):
    print '\r{0}'.format(i),
    time.sleep(1)
   ....:     
4 

In [14]: for i in range(1, 5):
    print '{0}\r'.format(i),
    time.sleep(1)
   ....:     
4

上面都是只在最后才打印一个 4,不能 1, 2, 3, 4 的在同一行循环显示,就像下载进度条增量改变一样,请大佬指教

1744 次点击
所在节点    Python
10 条回复
zbl430
2017-09-15 15:39:24 +08:00
```
for i in range(1, 5):
dd = '.'*i
sys.stdout.write(dd+'\r')
sys.stdout.flush()
time.sleep(1)

```
这样可以了,但是 print 依旧不知如何实现
keysona
2017-09-15 15:50:47 +08:00
python3


import time

for i in range(100):
time.sleep(1)
print('\r{}%'.format(i), end='', flush=True)
John60676
2017-09-15 15:52:54 +08:00
你的意思是 print 输出时不换行吗? py3 可以 print(i,end="") ,py2 可以 print i,
keysona
2017-09-15 15:55:27 +08:00
python2 的 print 会换行的。

python3 可以取消。
JimmyMu
2017-09-15 15:56:38 +08:00
for i in range(1, 5):
print '{0} '.format(i),
sys.stdout.flush()
sleep(1)
keysona
2017-09-15 15:58:21 +08:00
@JimmyMu

一个逗号居然可以去换行,见识了!
John60676
2017-09-15 15:59:54 +08:00
@keysona py2 可以在后面加个逗号取消
ltux
2017-09-15 16:05:13 +08:00
python 2.X 无法用 print 实现,即使 from __future__ improt print_function,print() 函数也不支持 flush 参数。
ltux
2017-09-15 16:06:00 +08:00
不能 flush 就无法实现。
zbl430
2017-09-15 16:24:21 +08:00
@JimmyMu 是这样的,但是需要依赖 sys.stdout.flush() ,谢了
@ltux 说的对

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

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

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

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

© 2021 V2EX