在很多常见中,需要对当前处理的进度进行显示,这个时候就需要进度条了,在python中,也有封装好的进度条模块,当然,也可以自己编写一个简单的进度条来帮助理解进度条的实现。

首先,需要理解一个概念,就是python什么时候将数据打印输出到屏幕或者文件中,这个和存储中的buffer有点像,因为内存的速度比较快,而硬盘的速度相对较慢,不可能说整个应用的速度,都是和硬盘的速度相当,这样会影响整个应用的效率,所以,应用会先将数据写入到内存cache中,在内存中有两个阈值,也就是高地水位值:

  • 在低水位以下时,系统会定期将cache中的数据,刷到硬盘中,这个时候数据才会存储在硬盘中,低速刷盘
  • 当高于低水位,而低于高水位时,系统会以中速,将cache中的数据,刷到硬盘中
  • 当cache中的数据,高于高水位时,系统会高速刷盘,直至刷到低水位以下。

在python中,系统刷盘,是通过flush来实现的,对于文件或者系统都是通过该方法来实现。写文件时,也不是有一条数据就往硬盘中写一条,都是有一个buffer_size,当要写入的数据量,达到buffer_size时,才会将数据写入到文件中,也就是硬盘中。

下面来说一下进度条的想法,定义一个100个空格宽的格子,进度条达到时,以=显示,在格子的尾部,显示当前的比例。

import sys,time
def process_view(now,total):
precent = int(now/total*100)
# print(precent)
sys.stdout.write("\r[%s%s%d%%]"%("="*precent," "*(100-precent),precent))
sys.stdout.flush()
time.sleep(0.1)

if __name__ == '__main__':
for i in range(101):
process_view(i,100)
i+=1

实现的效果如下:

[================== 18%]

其中,\r表示清除当前的屏幕输出,在打印本行输出时,先将之前的输出清除;

%s表示字符串占位符,指代后面的字符串

%d表示整型int占位符,指代后面的整型

%%表示百分比占位符,将前面的数字,以百分数的形式显示。

利用sys打印进度条的更多相关文章

  1. python3如何打印进度条

    Python3 中打印进度条(#)信息: 代码: import sys,time for i in range(50): sys.stdout.write("#") sys.std ...

  2. 打印进度条——(progress bar才是专业的)

    # 打印进度条——(progress bar是专业的) import time for i in range(0,101,2): time.sleep(0.1) char_num = i//2 #打印 ...

  3. python 之 time模块、datetime模块(打印进度条)

    6.9 time 模块 方法 含义 备注 time.time() 时间戳 1561013092.997079 time.strftime('%Y-%m-%d %H:%M:%S %p') 结构化时间st ...

  4. 【451】python 同一行打印进度条

    参考:Python3 Print 同一行打印显示进度条效果 参考:\r\n, \r and \n what is the difference between them? [duplicate] 参考 ...

  5. 小技巧:with用法 pycharm控制台输出带颜色的文字 打印进度条的

    with用法 with用法在python中是一个很独特的用法,因为别的语言的中没有这个用法.所以针对这个特点我们来做一次总结,什么样的情况下可以同with  我们学到的有文件的操作,和acquire  ...

  6. sys模块进度条玩法笔记

    #! /user/bin/env python# -*- encoding:utf-8 -*-import time,sys for i in range(31): sys.stdout.write( ...

  7. sys模块 进度条百分比

    用于提供对Python解释器相关的操作: sys.argv           命令行参数List,第一个元素是程序本身路径 sys.exit(n)        退出程序,正常退出时exit(0) ...

  8. 利用print函数模拟打印进度条

    import time , , ): time.sleep(0.1) num = i // 2 # 地板除,即取不大于/后的最小整数(3//2 = 1, 9//4 = 2, -7//2 = -4) s ...

  9. python打印进度条

    import sys,time第一种方法: for i in range(50): sys.stdout.write("#") time.sleep(0.1) sys.stdout ...

随机推荐

  1. python绝对路径和相对路径

    转自https://blog.csdn.net/databatman/article/details/49453953 下面的路径介绍针对windows,其他平台的暂时不是很了解. 在编写的py文件中 ...

  2. linux mysql -- ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid)

    转载 http://blog.csdn.net/caiyaodeng/article/details/45937183 linux 链接mysql 报错 ERROR! The server quit ...

  3. Lodop控件NewPage();测试输出空白页

    LODOP.NewPage();和LODOP.NewPageA();是强制分页语句,两者的区别可查看本博客的相关博文:Lodop强制分页LODOP.NewPage()和LODOP.NewPageA() ...

  4. 学习 Spring (十一) 注解之 Spring 对 JSR 支持

    Spring入门篇 学习笔记 @Resource Spring 还支持使用 JSR-250 中的 @Resource 注解的变量或 setter 方法 @Resource 有一个 name 属性,并且 ...

  5. Jarvis OJ A Piece Of Cake

    看图片的隐写术自闭,本来想看一看jarvisoj 的basic放松一下心情,结果一道题就做了一晚上qwq 首先看到这道题的时候想到的是凯撒密码(这其实是Google之后才知道这个名字的)枚举了26种位 ...

  6. P2123 皇后游戏

    题目背景 还记得 NOIP 2012 提高组 Day1 的国王游戏吗?时光飞逝,光阴荏苒,两年 过去了.国王游戏早已过时,如今已被皇后游戏取代,请你来解决类似于国王游 戏的另一个问题. 题目描述 皇后 ...

  7. Lisp小程序,大作用,不该放弃!

    从听说autolisp到现在已经20年了, 学了一点点, 可惜中间没能坚持下来, 放弃了!     今天在画图, 图纸是从revit转成dwg的, 其中有些文本的朝向是错误的, 如果手工旋转很是费事, ...

  8. java中值类型与引用类型的关系

    值类型:就是java的基本类型.byte.short.int.long.float.char.double.boolean 引用类型:类(class).接口(Interface).数组(Array) ...

  9. 安装 xadmin 报错: Command "python setup.py egg_info" failed with error code 1 in C:\Users\Python\AppData\Local\Temp\pip-install-1k1byg0p\xadmin\

    报错详情 安装 xadmin 组件的时候报错 不论是命令行还是 pycharm 方式都不行 分析报错 按照报错提示是说 README.rst 文件的编码问题导致. 解决报错 通过 github 下载源 ...

  10. ans Single VIP LLB and SLB config

    ans Single VIP LLB and SLB config 配置命令: # 配置设备工作模式和开启的功能 > enable ans mode FR MBF Edge USNIP L3 P ...