我想运行一个脚本,它基本上显示如下输出:
Installing XXX... [DONE]
目前,我打印安装XXX…首先,然后打印[完成]。
我怎么能打印安装xxx…和[DONE]在同一行?
关于在同一行上写入新消息,替换之前的内容的具体问题,请参见如何将先前的打印内容覆盖到标准输出?。这里的大多数答案都把这个问题理解为在当前行的末尾写新的文本。
有关使用单个打印一次输出多个内容的问题,请参见如何在同一行上一次性打印多个内容(固定文本和/或变量值)。
我想运行一个脚本,它基本上显示如下输出:
Installing XXX... [DONE]
目前,我打印安装XXX…首先,然后打印[完成]。
我怎么能打印安装xxx…和[DONE]在同一行?
关于在同一行上写入新消息,替换之前的内容的具体问题,请参见如何将先前的打印内容覆盖到标准输出?。这里的大多数答案都把这个问题理解为在当前行的末尾写新的文本。
有关使用单个打印一次输出多个内容的问题,请参见如何在同一行上一次性打印多个内容(固定文本和/或变量值)。
当前回答
没有一个答案对我有用,因为它们都暂停了,直到遇到新的一行。我写了一个简单的helper:
def print_no_newline(string):
import sys
sys.stdout.write(string)
sys.stdout.flush()
要测试它:
import time
print_no_newline('hello ')
# Simulate a long task
time.sleep(2)
print('world')
“hello”将首先打印出来,并在睡眠前刷新到屏幕上。之后你就可以使用标准打印了。
其他回答
Sys.stdout.write将输出没有返回符
import sys
sys.stdout.write("installing xxx")
sys.stdout.write(".")
http://en.wikibooks.org/wiki/Python_Programming/Input_and_output#printing_without_commas_or_newlines
使用sys.stdout。写(“安装XXX……')和sys.stdout.write('Done')。通过这种方式,如果您想重新创建打印功能,就必须手动添加“\n”新行。我认为没有必要为此使用诅咒。
Python 3中的解决方案。X具体:
当我需要这样做的时候,我通常只用
end=' '
例如:
# end='' ends the output with a <space>
print("Welcome to" , end = ' ')
print("stackoverflow", end = ' ')
输出如下:
Welcome to stackoverflow
end=中的空格可以替换为任何字符。例如,
print("Welcome to" , end = '...')
print("stackoverflow", end = '!')
输出如下:
Welcome to...stackoverflow!
没有一个答案对我有用,因为它们都暂停了,直到遇到新的一行。我写了一个简单的helper:
def print_no_newline(string):
import sys
sys.stdout.write(string)
sys.stdout.flush()
要测试它:
import time
print_no_newline('hello ')
# Simulate a long task
time.sleep(2)
print('world')
“hello”将首先打印出来,并在睡眠前刷新到屏幕上。之后你就可以使用标准打印了。
在Quora上找到了这个帖子,上面的例子对我很有用(python 3), 这更接近于我需要它(即擦除整个前一行)。
他们提供的例子是:
def clock():
while True:
print(datetime.now().strftime("%H:%M:%S"), end="\r")
如果要在同一行打印,就像其他人建议的那样,只需使用end=""