Python 中可修改的控制台输出

Are*_*ski 5 python command-line console ipython

一些程序能够修改控制台输出,wget 很容易想到。

在此处输入图片说明

我怎样才能在纯 Python 中做到这一点?我知道 IPython 有clear_output()。我试过了,但即使这样也不起作用。我更喜欢纯 Python。

from IPython.core.display import clear_output
from time import sleep

for i in range(100):
    clear_output()
    print '[', '='*i, ' '*(100-i), ']'
    sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

asciicast

mur*_*uru 11

虽然适当的库是最好的解决方案,但我想展示一个简单的替代方案:使用\r(回车)而不是\n(换行)作为行尾,以便将光标放在当前行的开头,而不是在下一行。

#! /usr/bin/python3

from time import sleep

for i in range(100):
    print('[' + '='*i + ' '*(100-i) + ']', end='\r')
    sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

  • 文件的行尾字符是不同的,`\r` 和 `\n` 的这种用法在 Windows 和 OSX 上都可以正常工作 (2认同)

Are*_*ski 6

Helio 提示的解决方案效果很好!我需要pip install progressbar首先,但随后一个官方示例就像一个魅力。

from progressbar import *    
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
    time.sleep(0.01)
    pbar.update(i+1)
pbar.finish()
Run Code Online (Sandbox Code Playgroud)

官方网站(附示例):https : //code.google.com/p/python-progressbar/


don*_*oey 5

实际上有许多软件包允许您编写命令行界面。例如,我知道click 有一个进度条。

哦,关于你的要求“纯蟒蛇”,我的朋友是非蟒蛇。Python 想让你使用第三方包。

asciicast