python 在同一行打印_关于打印:Python:在同一行上打印多个

我想运行一个脚本,它基本上显示如下内容:

Installing XXX...               [DONE]

现在,我使用print在函数成功后打印整行。但是,现在我希望它首先打印"installing xxx…",在函数运行之后,添加"done"标记;但是在同一行。

有什么想法吗?

如何防止python print添加换行符或空格的可能副本?

这个问题的答案没有提到,有时候你想清除行,请参见:stackoverflow.com/questions/45263205

您可以使用print语句来执行此操作,而无需导入sys。

def install_xxx():

print"Installing XXX...     ",

install_xxx()

print"[DONE]"

print行末尾的逗号防止print发出新的行(您应该注意,输出末尾将有一个额外的空间)。

python 3解决方案由于上面的内容在python 3中不起作用,您可以这样做(同样,不导入sys):

def install_xxx():

print("Installing XXX...     ", end="", flush=True)

install_xxx()

print("[DONE]")

print函数接受默认为"

"的end参数。将其设置为空字符串可防止它在行尾发出新行。

它工作得很好。到目前为止只看到过stdout解决方案。很高兴知道这一点。

如果您同时拥有打印和耗时的操作(所有操作都在同一功能/缩进级别),则此操作不起作用。在操作开始之前,根本没有输出,完成之后,输出显示为整体。

这可能更像是由操作系统为整个进程执行的输出缓冲的函数,而这不是特定于Python的问题。请参阅stackoverflow.com/questions/107705了解特定于python的解决方法。

如果没有换行符,可能需要显式刷新缓冲区。在python 3中使用print("...", end="", flush=True),在python 2中添加一个sys.stdout.flush()调用。

在python 3.x中,您需要在末尾添加一个"r",以替换打印行,而不是附加到它的末尾print("Progress: {}%".format(var), end="

", flush=True)。

如果要覆盖该行,则不要将end=""放在end="

"上,以便光标再次开始。或者在python 2中,将"

"附加到字符串中。注意离开克鲁夫特的短线。可能想用str.ljust(longest)填充。

为了防止有人偶然发现这一点:您还必须调整打印字符串的长度以适应终端线。否则,该线程中的任何方法都不会工作(至少在MacOS 10.13上不工作)。;)

您可以简单地使用:

print 'something

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值