在python 3中动态打印一行[重复]

Posted

技术标签:

【中文标题】在python 3中动态打印一行[重复]【英文标题】:Printing a line dynamically in python 3 [duplicate] 【发布时间】:2016-03-04 20:06:22 【问题描述】:

我正在尝试在 python 3 中打印一行,该行会随着程序的进行而改变。例如,如果我尝试:

import time
for i in range(0,10):
    print('Loading' + '.'*i)
    time.sleep(0.5)

我明白了:

Loading.
Loading..
Loading...

等等。我可以让它改变前一行并得到另一个'。添加到它而不是打印一个新的?当然,我可以这样做:

import time, os
for i in range(0,10):
    os.system('cls')
    print('Loading' + '.'*i)
    time.sleep(0.5)

但这会导致其自身的问题。我知道以前有人问过这个问题,但是由于某种原因给出的所有答案都不起作用。做类似的事情:

import time
for i in range(0,10):
    print('Loading' + '.'*i, end="\r")
    time.sleep(0.5)

不会改变任何东西,用“”替换“\r”只会让python暂时不打印任何东西,然后打印出整行。我做错了什么?

【问题讨论】:

【参考方案1】:
import time
print('Loading', end='.')
for i in range(0,10):
    print('', end=".")
    time.sleep(0.5)

见explanation of end syntax和working example。

【讨论】:

print('.', end='')更直观,只是省略了换行符。 @Felk 你可能是对的。 这只是在大约 5 秒内没有打印出任何内容,然后我在一次打印中得到“正在加载…………”…… 这真的很奇怪。答案中的第二个链接(指向一个可运行的示例)对您有用吗?如果可以,但在您的解释器中不起作用,您确定您使用的是 python3 吗? (也可能是系统时钟或速度问题。) 第二个链接无法打开:“与服务器的安全连接失败。”。不知道有什么问题。我注意到所有答案都适用于大多数人,但不适用于我——也许是一些奇怪的 python 故障......?顺便说一句,我正在使用 python 3.4【参考方案2】:

您可以使用回车\r 来重写当前行,如下所示:

import time
for i in range(50):
    print("Loading" + "."*i, end="\r")
    time.sleep(0.1)

【讨论】:

我已经尝试过了 - 提供与问题中的代码相同的输出... 你输出到什么样的控制台? 我正在使用 WinPython,输出到标准控制台。【参考方案3】:

您可以使用 ANSI 清除屏幕转义字符作为

print(chr(27) + "[2J")

【讨论】:

我刚得到大量的 '[2J's 它适用于我的 OSX 和 python3。也应该与 linux 一起使用 我使用的是 Windows 7...

以上是关于在python 3中动态打印一行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery动态行绑定事件,发生重复绑定解决方案

使用jquery动态添加的css打印html表[重复]

动态打印完全限定的类名和方法名[重复]

在 Python 中打印一个动态的大列表

Python动态添加按钮分别管理[重复]

Python函数的动态参数[重复]