前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Python] 使用print作进度条(解决end=''时print不显示的问题)

[Python] 使用print作进度条(解决end=''时print不显示的问题)

作者头像
kr
发布2022-09-26 10:53:12
6.3K0
发布2022-09-26 10:53:12
举报
文章被收录于专栏:个人教程个人教程

0x00

Python的print()末尾自带\n,如果不想要末尾的\n可以使用end=''控制末尾的字符。 例如这样:

代码语言:javascript
复制
# 示例一
print("12",end='')
print("34")

# 打印
# 1234

# 示例一
print("12",end='-')
print("34")

# 打印
# 12-34

0x01

假如现在要写一个加载进度条,大部分人下意识会这样用:

为了展示方便使用延时

代码语言:javascript
复制
import time

print('加载中',end="")
for n in range(0,10):
    print(".",end="")
    time.sleep(0.5)
print("\n加载成功!")

显示如下:

代码语言:javascript
复制
加载中..........
加载成功!

虽然结果看着没问题,但过程有问题。 理想中的进度条.应该是渐渐出现的,就像这样:

代码语言:javascript
复制
加载中.
加载中..
加载中...
加载中....

可这个程序的加载中..........是整个出现的,就像这样:

代码语言:javascript
复制
// 运行
// 1s
// 2s
// 3s
// 4s
// 5s
加载中..........

0x02

经过查询得知,print只有在接收到\n时才会把数据送到控制台显示。 例如:

代码语言:javascript
复制
# 示例一

print('1',end='') # 控制台不显示
print('2',end='') # 控制台不显示
print('3') # 控制台显示 123

# 示例二

print('1',end='') # 控制台不显示
print('2',end='') # 控制台不显示
print('') # 控制台显示 12

# 示例三

print('1',end='') # 控制台不显示
print('2',end='') # 控制台不显示
print('3\n',end='') # 控制台显示 123

0x03

解决起来也很简单,给print()加一个flush=True即可。 例如上面的0x01的程序,只要改成这样就能实现理想中的效果了。

代码语言:javascript
复制
import time

print('加载中',end="",flush=True)
for n in range(0,10):
    print(".",end="",flush=True)
    time.sleep(0.5)
print("\n加载成功!")
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022 年 08 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00
  • 0x01
  • 0x02
  • 0x03
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档