在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中动态打印一行[重复]的主要内容,如果未能解决你的问题,请参考以下文章