如何在Python中不使用, 在同一行打印

0 投票
6 回答
545 浏览
提问于 2025-04-17 12:20

目前,我在一个脚本里有以下代码:

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()

撰写回答