在很多常见中,需要对当前处理的进度进行显示,这个时候就需要进度条了,在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. [NOIP]2017列队——旋转treap/非旋转treap

    Sylvia 是一个热爱学习的女孩子.  前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有n × m名学生,方阵的行数为 n,列数为m.  为了便 ...

  2. 洛谷P1414又是毕业季二题解

    题目 思想: 首先这个题必定是一个数学题,肯定不是一个一个枚举得到解,这样肯定会T,所以我们就应该想一些别的方法,. 分析: 比如,答案,一定是递减的,因为该答案所满足的条件肯定是越来越苛刻的,所以我 ...

  3. Data truncation: Data too long for column 'content' at row 1

    项目运行报错: Data truncation: Data too long for column 'content' at row 1 是由于字段长度太小导致的 搜索mysql 中text 字段长度 ...

  4. WINDOWS 包管理器 Chocolatey

    https://chocolatey.org/ - 官网 安装: @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe& ...

  5. PHP 事务写法

    $md=new Model(); //创建事务 $md->startTrans(); //开始事务 $md->table("ym_xxx")->where(&qu ...

  6. 自定义Qt构建步骤,添加数据文件(txt,json等)到构建目录

    Qt的qrc资源文件是只读的,因此我们如果要用txt之类的文件存储数据,在程序运行过程中就不能对它们进行修改,也就是不能进行读操作.用"file.open(QIODevice::WriteO ...

  7. 【 HDU4773 】Problem of Apollonius (圆的反演)

    BUPT2017 wintertraining(15) #5G HDU - 4773 - 2013 Asia Hangzhou Regional Contest problem D 题意 给定两个相离 ...

  8. dns配置文件

    /etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数. resolv.conf的关键字主要有四个,分别是: nameserver   ...

  9. 51NOD1174 区间最大数 && RMQ问题(ST算法)

    RMQ问题(区间最值问题Range Minimum/Maximum Query) ST算法 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度 ...

  10. Nginx+Keepalived部署

    -----------ReProxy-------------------------Client-----------192.168.56.200 nginx+keepalived 192.168. ...