目前,我在脚本中有以下代码:
print "Loading... "
html = urllib2.urlopen(url).read()
print "Done"
效果很好,它会显示加载,在下载完成时暂停,然后显示完成。唯一的问题是,“完成”是在下一行。
理想情况下,它会在同一行,所以我会得到Loading... (pause) done
我尝试在第一个print语句的末尾添加一个逗号,但是虽然它实现了所需的输出,但在加载HTML之前它不会输出任何字符串,因为逗号告诉python要等到完成印刷声明(至少我认为确实如此)。
那么如何在同一行上打印“正在加载”和“完成”,同时仍然能够独立输出它们?
答案 0 :(得分:6)
标准输出是行缓冲的,你必须冲洗它:
sys.stdout.flush()
答案 1 :(得分:3)
use可以使用sys模块
sys.stdout.write("plop")
答案 2 :(得分: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 :(得分:2)
试试这个:
import sys
print "Loading... ",
sys.stdout.flush()
html = urllib2.urlopen(url).read()
print "Done"
答案 4 :(得分:2)
这种方式也有效,但此后需要Python 3打印语法的缺点......
from __future__ import print_function
print("Loading...", end=" ")
html = urllib2.urlopen(url).read()
print("Done")
答案 5 :(得分:0)
print(“ stack”,end =“”)
打印(“溢出”)