如何在python中在同一行上打印而不使用,

时间:2012-02-04 20:44:54

标签: python string

目前,我在脚本中有以下代码:

print "Loading... "
html = urllib2.urlopen(url).read()
print "Done"

效果很好,它会显示加载,在下载完成时暂停,然后显示完成。唯一的问题是,“完成”是在下一行。

理想情况下,它会在同一行,所以我会得到Loading... (pause) done

我尝试在第一个print语句的末尾添加一个逗号,但是虽然它实现了所需的输出,但在加载HTML之前它不会输出任何字符串,因为逗号告诉python要等到完成印刷声明(至少我认为确实如此)。

那么如何在同一行上打印“正在加载”和“完成”,同时仍然能够独立输出它们?

6 个答案:

答案 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 =“”)
打印(“溢出”)