我正在按照如何在命令行中创建动画的建议编写进度条。我使用Pycharm并在“运行工具窗口”中运行此文件。
import time
def show_Remaining_Time(time_delta):
print('Time Remaining: %d' % time_delta, end='\r', flush=True)
if __name__ == '__main__':
count = 0
while True:
show_Remaining_Time(count)
count += 1
time.sleep(1)
然而,如果我运行这个.py文件,代码没有显示任何内容。我做错了什么吗?
我尝试了Jogger的建议,但是如果我使用print函数,它仍然无法工作。
然而,下面的脚本按预期工作。
import time
import sys
def show_Remaining_Time(time_delta):
sys.stdout.write('\rtime: %d' % time_delta) # Doesn't work if I use 'time: %d\r'
sys.stdout.flush()
if __name__ == '__main__':
count = 0
while True:
show_Remaining_Time(count)
count += 1
time.sleep(1)
我现在有两个问题:
为什么stdout有效而print()不起作用。
为什么这篇文章“如何在命令行中添加动画?”建议在末尾附加
\r
,而在我的情况下必须在开头写?
end='\r'
,它会像正常一样打印。但我想保持更新同一行。 - spacegoingprint
可以工作,但你需要写成:print('\rTime Remaining: %d' % time_delta,end ='', flush = True)
(所以首先要打印回车符,而不是最后)。 - ShadowRangerend=''
否则它也不会工作。 - spacegoingend=''
是有原因的;默认值是end="\n"
(会自动转换为os.linesep
),这将导致一个新行并且会取消回车符的意图。 - ShadowRanger