转载自-百度经验
作者:BinnLZeng
原文:怎么用Python的print在一行中打印(计时器功能)


场景设计

最典型的这样一种场景:我们在控制台内需要一个倒计时的功能,例如提示,程序将在x秒后启动。或者用python开发下载程序,用于在一行中显示下载百分比进度。

我们来看看这两个程序:

第一个是倒计时:

第二个是显示百分比进度:

我们要实现的就是这样的功能。

实现倒计时功能

我们要实现这样的功能,我们就必须要开启print的缓冲区让print不换行

我们仔细看看print的参数:

print(value,sep=' ',end='\n',file=sys.stdout,flush=False)

value 是我们要打印的字符串,

sep 是value之间的间隔(我们可以print("Hello","Python")看到中间确实有一个空格间隔开了)

end 是打印完成之后要打印的事,print默认在结束的时候打印一个\n,即换行(我们想要print不换行,只要把end参数换成''即可)。

file=sys.stdout 则是打印到哪里 sys.stdout是系统的控制台,即标准输出设备

flush=False 是说明print不开启缓冲区(部分终端会延迟输出,不会即时显示),开启缓冲区只需把flush设置成True即可。

这些说明,我们可以在python IDLE(Python)中输入print(看到,如图


注:python IDLE是Python软件包自带的一个集成开发环境,初学者可以利用它方便地创建、运行、测试和调试Python程序。IDLE是跟Python一起安装的,不过要确保安装时选中了“Tcl/Tk”组件,准确地说,应该是不要取消该组件,因为默认时该组件是处于选中状态的。
“开始”菜单→“所有程序”→“Python 2.7”→“IDLE(Python GUI)

OK,我们来开始写第一个程序,倒计时程序,这里小编倒计时5秒。
我们要使用倒计时的话,要用到time模块

#-*- coding:utf-8 -*-
import timeprint("倒计时程序")
for x in range(5,-1,-1):mystr = "倒计时" + str(x) + "秒"print(mystr,end = "")print("\b" * (len(mystr)*2),end = "",flush=True)time.sleep(1)

但是我们不能直接按下F5在Python IDLE的Shell中运行,Python的IDLE无法识别\b字符,所以我们只能在控制台看到正确的结果。

注:

range(5,-1,-1):
        使用range产生一个列表,从5开始到-1之前结束。range的用法是range(开始,结束,步长),因为我们是要从大到小,所以我            们用-1表示步长为-1,意味着每次-1,如果是-2,那就是每次-2
str(x):
        把x变量转换成字符串
 print(mystr,end = "") :
        我们打印字符串之后,不换行,即end=""
print("\b" * (len(mystr)*2),end = "",flush=True):
        "\b" * (len(mystr)*2)这句话的意思是,打印'\b'这个转义字符,然后打印len(mystr)*2次。len得到字符串长度,为什么要*2              呢?要知道,我们用的字符串是中文,而1个中文字符 = 2个英文字符(占位),所以,如果字符串是英语,我们完全可以            不*2,但是中文字符就不同了。具体小伙伴可以把*2去掉试试看
flush = True:
        开启缓冲区
\b转义字符:
        退格功能,相当于在编辑文件的时候按下BackSpace键,从光标位置往前删掉一个字符
time.sleep(1):
        让程序暂停1秒

这样做的就能每次print之后,\b帮我们把一行内的字符都清光,这就是我们为什么要获得字符串长度的原因

实现百分比进度功能

让我们做第二个显示百分比进度的程序:

#-*- coding:utf-8 -*-import timeprint("显示百分比")
for x in range(101):mystr = "百分比" + str(x) + "%"print(mystr,end = "")print("\b" * (len(mystr)*2),end = "",flush=True)time.sleep(0.5)

原理和倒计时程序一样,同样不能在IDLE中运行哦。

附:
循环(10次)输出动态【loading......】效果(参考以上方法手动实现)

import timeprint("Loading", end="")
temp_time = 0
while temp_time < 10:for i in range(6):print(".", end="")time.sleep(0.3)print("\b" * 6, end="")temp_time += 1

扩展阅读

python的print(flush=True)实现动态loading......效果
作者:Granthoo 出处:csdn

python实现原地刷新方式输出-可用于百分比进度显示输出
作者:weixin_33736048 出处:csdn

软件测试学习 之 Python 模拟倒计时、百分比进度相关推荐

  1. 软件测试python基础_软件测试学习教程——python基础

    原标题:软件测试学习教程--python基础 一,print()函数 print 作用:把" "内部的内容,输出到屏幕. print("hello world" ...

  2. 软件测试学习 之 Python 类属性 实例属性、实例方法 类方法 静态方法

    本篇的主要内容是自己的手动操作的学习记录,关于个名词的理论概念参见以下文章: Python 实例方法.类方法.静态方法的区别与作用 作者:蔷薇Nina 出处:博客园 python3类对象.实例对象.类 ...

  3. 软件测试学习 之 Python 函数默认参数

    转载说明 作者:珞樱缤纷 出处:博客园 博文:Python进阶-函数默认参数 Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的 ...

  4. 软件测试学习 之 Python 两种执行方式——python和python -m 的区别

    笔者使用的操作系统为windows 7,python解释器版为python3.7,pycharm版本为pycharm2018.3 如无特殊说明,代码均在此环境执行 目录 一般结论 简单例子 模块 作为 ...

  5. 学习《python模拟测试机器人》笔记2

    游戏测试机器人搭建 - Send Actor 初始化,启动,心跳包,序列化和发送数据,停止,收集 Send Actor Send Actor初始化 class SendActor(pykka.Thre ...

  6. python模拟网页点击_python模拟点击

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...

  7. python爬虫学习笔记2模拟登录与数据库

    前言 为了加入学校里面一个技术小组,我接受了写一个爬取学校网站通知公告的任务.这个任务比以前写的爬虫更难的地方在于,需要模拟登录才能获得页面,以及将得到的数据存入数据库. 本文按照日期来记录我完成任务 ...

  8. Python项目实战学习案例--股票模拟交易系统

    Python学习案例–股票模拟交易系统 源代码地址:https://gitee.com/wujize188_admin/mini_stock.git 主要技术 后台:Flask框架,sqlalchem ...

  9. Python学习教程:用Python模拟登录淘宝

    今天跟大家出的Python学习教程,Python模拟登录淘宝,我知道,肯定是吸引了你,一起来看看吧! 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录 ...

最新文章

  1. Activiti——工作流之流程实例、任务的执行(五)
  2. python高级语法-高阶函数之map的使用方法
  3. 带有Prometheus的弹簧靴和千分尺第5部分:旋转Prometheus
  4. next和hasnext_使用Java中的next()和hasNext()方法遍历List元素
  5. 试着用React写项目-利用react-router解决跳转路由等问题(二)
  6. 使用sklearn预测走势_Prophet: 时间序列预测库
  7. 剑指 Offer 55 - I. 二叉树的深度
  8. 剑指offer刷题 04. 二维数组中的查找
  9. mysql5.7优化案例_MYSQL5.7函数索引优化案例【企业数据库实战优化项目】
  10. 8.15-30题目归档
  11. 树莓派Python读取DHT11温湿度数据
  12. 大数据带来了哪些改变
  13. 知言:《第一行代码》作者郭霖:不要成为工具的奴隶
  14. 数据结构java朱战立pdf_数据结构使用C语言 朱战立,刘天时编著.pdf
  15. 离散数学:关系的性质
  16. 基于LSTM的上证指数预测
  17. 奔跑的微信,失控的张小龙
  18. 实测几款常见的DNS,看防护能力怎么样?
  19. ps cs6导出html,Photoshop cs6导出和载入笔刷方法介绍
  20. ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock

热门文章

  1. Linux系统如何操作关机或重启180.188.22.X
  2. pojnbsp;百炼nbsp;2965:玛雅历
  3. Wdcp安装不存在phps的问题
  4. 如何设置电脑窗口为护眼色
  5. 技术面试之反向面试问什么?很多人都不知怎么问。
  6. 每日简报 4月6日简报新鲜事 在这里,60秒读懂世界
  7. hdu6681 Rikka with Cake(主席树)
  8. MPEG-CDVS标准概述论文粗译 Overview of the MPEG-CDVS Standard
  9. 城市的未来要押注无人驾驶汽车吗?这是个艰难的抉择
  10. 蓝桥杯 | 扑克排序(详细解析)