我看到终端中显示了几个不同的加载条。但是,其中一些依赖\r
似乎不起作用,可能是因为我使用Python 2.7而不是3.X。
我有一个加载栏,但每次都会打印一个新行。
def update_progress(progress):
print"\r [{0}] {1}%".format('#'*(progress/10), progress)
while prog != 101:
update_progress(prog)
prog = prog + 1`
我是Python的新手,所以如果可能的话,你可以让代码简短易懂。这篇文章可能看起来像一个重复的问题,但Stack Overflow上的其他一些文章无法在新行上工作或打印。
如果\r
应该适用于Python 2.7,那么你可以解释一下如何修复它,因为它不起作用吗?然而,这让我感到困惑,因为\n
完全正常,但这是另一个问题。
P.S:我还需要它在再次打印前清除该行。
由于 AlwaysAwake
答案 0 :(得分:3)
除了你永远不会初始化prog
(我想你想要prog = 0
循环之前的while
)之外你可以禁止在Python2中打印换行符在声明后加上一个逗号:
def update_progress(progress):
print "\r [{0}] {1}%".format('#'*(progress//10), progress),
但是,在阅读代码时很难错过这个逗号,因此导入和使用Python 3 print
函数会更好。
from __future__ import print_function
def update_progress(progress):
print("\r [{0}] {1}%".format('#'*(progress//10), progress), end='')
答案 1 :(得分:0)
您需要使用if (MY_CONSTANT = bar) {
/* then do something */
}
因为sys.stdout.write()
添加了一个新行:
print()
另请注意,在python3中,您可以将参数import sys
def update_progress(progress):
sys.stdout.write("\r [{0}] {1}%".format('#'*(progress/10), progress))
while prog != 101:
update_progress(prog)
prog = prog + 1
与end
一起使用:
print()
答案 2 :(得分:0)
请使用sys.stdout.write("yourstring")
,然后使用sys.stdout.flush()
确保显示内容。为了在跨平台开发中进行图形处理,我建议您使用Python库termcolor
和colorama
。他们将为Windows命令行着色,以便您可以创建漂亮的进度条。如果您要发布项目,可以在代码中实现colorama
和termcolor
的代码,并且只有一个文件。
享受Python的乐趣
Famecastle