如何在Python中不使用, 在同一行打印
目前,我在一个脚本里有以下代码:
print "Loading... "
html = urllib2.urlopen(url).read()
print "Done"
这个代码运行得很好,它会显示“加载中”,在下载完成时暂停,然后显示“完成”。唯一的问题是,“完成”是在下一行显示的。
理想情况下,我希望它们在同一行显示,这样我就能看到 加载中...(暂停)完成
我试着在第一个打印语句的末尾加一个逗号,虽然这样可以达到我想要的效果,但它在加载HTML之前不会输出任何内容,因为逗号让Python等到打印语句完成后才输出(至少我觉得是这样)。
那么,我该如何在同一行打印“加载中”和“完成”,同时又能独立输出它们呢?
6 个回答
3
调用 flush()
方法在 sys.stdout
上,似乎能达到我们想要的效果,这里用 sleep()
模拟了一个“加载”的过程:
#!/usr/bin/env python
from sys import stdout
from time import sleep
print "Loading... ",
stdout.flush()
sleep(5)
print "Done"
所以,虽然在打印的时候使用了 ,
,而你在问题中说你不想这样做,但这确实解决了问题。
3
可以使用 sys 模块
sys.stdout.write("plop")
6
标准输出是行缓冲的,这意味着你需要手动刷新它:
sys.stdout.flush()