之前看到很多软件都能在命令行下多行刷新,可在python 的默认打印中只能支持单行刷新。 网上搜了很多文章都没有解决这个问题。后来看到
ANSI ESCAPE CODES`相关的概念,终于看到了曙光。
参考文档
wiki
注: 在命令行下执行 python 文件才可以
# -*- coding:utf8 -*-
import time,sys
def progressbar():
print 'Loading...'
print "[+] start to build...."
height = 4
for i in range(0, 100):
if i > 0:
sys.stdout.write(u'\u001b[1A')
time.sleep(0.1)
width = (i + 1) / 4
bar = '[' + '#' * width + ' ' * (25 - width) + ']'
sys.stdout.write(u'\u001b[1000D\u001b[2K' + ' | -> ' + bar + '\n')
sys.stdout.write(u'\u001b[1000D\u001b[2K' + ' | -> ' + bar)
sys.stdout.flush()
sys.stdout.write(u'\u001b[1A')
sys.stdout.write(u'\u001b[1A')
sys.stdout.write(u'\u001b[1000D')
sys.stdout.write(u'\u001b[J')
sys.stdout.write('[-] Finish build')
sys.stdout.flush()
print
progressbar()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.