我有一个用于仿真的python脚本,一个for循环要花很长时间,每个循环要花不同的时间,因此我.在每个循环后打印一个,以监视它运行的速度和经过的时间。for脚本运行时的声明。
for something:
do something
print '.',
Run Code Online (Sandbox Code Playgroud)
但是,当我在终端中的iPython中运行脚本时,点并不会一一打印,而是在循环结束时一次打印所有点,这使整个过程变得毫无意义。如何在运行时内联打印点?
我试图通过在同一行上每秒打印一个点来创建类似进度的东西.像"钓鱼......"之类的东西.这是我用过的:
import time
print('Fishing', end='')
for i in range(5):
time.sleep(1)
print('.', end='')
Run Code Online (Sandbox Code Playgroud)
但它会等待5秒钟并立即打印Fishing.....所有内容.但是当我不使用时end='',它每秒打印一次点,但是在这样的单独行上
Fishing.
.
.
.
.
Run Code Online (Sandbox Code Playgroud)
print这样做?如果我想使用带有逗号 (2.6) 的打印,只要您不使用 time.sleep(),它就可以正常工作。
如果使用带有逗号的打印,然后调用睡眠;如果您处于循环中,则字符串永远不会打印。
例子:
a=1
b=10
while a<b:
print "yes",
a=a+1
Run Code Online (Sandbox Code Playgroud)
这有效,您将看到 yes 打印在同一行上 10 次。但这行不通。
a=1
b=10
while a<b:
print "yes",
time.sleep(1)
a=a+1
Run Code Online (Sandbox Code Playgroud)
期望是会打印yes;然后等待一秒钟,然后将打印下一个是。相反,您会看到 10 秒后打印出一串 10 yes。
如果您使用 while 循环,情况也是如此;只要循环正在运行,并且您有一个 sleep 语句,字符串就不会打印到最后。
要使其工作,请删除逗号。如果您想指定要在每个字符串之间等待多长时间,则无法在同一行上打印字符串。
这是打印功能中的错误吗?