python 控制台单行刷新,多行刷新实例


Posted in Python onFebruary 19, 2020

先贴出单行刷新实现的进度条:

python 控制台单行刷新,多行刷新实例

对于控制台的单行刷新,比较简单,先直接贴出代码:

strarrs = ['/','|','\\']
 for i in range(15):
   sys.stdout.write(strarrs[i % 3]+'{}/15:'.format(i+1)+'#' * i+'\r')
   sys.stdout.flush()
   time.sleep(1)

对于单行刷新以及坑

1.print是对sys.stdout.write的友好封装,利用sys.stdout.write把数据输出到标准输出,貌似也可用print来做,这里没有深入研究

2.一定要在write()里面加入 '\r',或者是'\b'等转义字符,其中python转义字符表如下:

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

这就相当于是回车到了输出开头,然后,重新写,在刷新!

如此,一个简单的进度条就实现了!

接下来说一说,多行的刷新问题:

多行刷新,就不能简单的使用输入输出了,应该使用的是一个curses的库,这个库,是以前用c写的库,如果熟悉c下,curses库的使用的话,用python会上手很快.

但是我之前并没有接触罗..一点一点看罗- - ,还有一点就是这个库,现在好像貌似只能在linux下使用,windows不能使用,mac不太清楚,windows下貌似是有别的解决方案

上效果图:

python 控制台单行刷新,多行刷新实例

大部分实现curses,的程序模式都是基于以下的代码

stdscr=curses.initscr()
 # 一些常用设置
 curses.noecho()
 curses.cbreak()
 stdscr.keypad(1)
 # 以下写监听按键的代码或者loop代码等...
....
#关闭之前的操作
 stdscr.keypad(0)
 curses.echo()
 curses.nocbreak()
 curses.endwin()

主要的程序逻辑都在...中,下面直接贴出代码:

import curses
import time
import os
import random
stdscr = curses.initscr()
curses.noecho()   #不输出- -
curses.cbreak()   #立刻读取:暂不清楚- -
stdscr.keypad(1)  #开启keypad
stdscr.box()

width = os.get_terminal_size().columns
height = os.get_terminal_size().lines
c_y = height//2 - 1
c_x = width//2 - 10
stdscr.addstr(c_y+5,c_x,'press C to continue',curses.A_REVERSE)
while True:
  c = stdscr.getch()
  if c == ord('c') or c == ord('C'):
    break

zh_ = '1234567890-qwertyuiopasdfghjklzxcvbnm,[;l,]/~!@#$%^&*()_+}"?{:><}"'';'
while True:
  for linei in range(1,width-1):
    for linej in range(1,height-1):
      if linej == c_y:
        if linei <= 5 or linei+6 >= width:
          stdscr.addstr(linej,linei,'$')
        else:
          stdscr.addstr(linej,c_x,time.strftime('%Y-%m-%d %H:%M:%S'),curses.A_BOLD)
      else:
        randominx = random.randint(0,len(zh_)-1)
        stdscr.addstr(linej,linei,zh_[randominx])
  stdscr.move(c_y,c_x)
  stdscr.refresh()
  time.sleep(1)

curses.endwin()

这样,一个多行刷新的demo就完成了.

以上这篇python 控制台单行刷新,多行刷新实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现协同过滤推荐算法完整代码示例
Dec 15 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
详解django.contirb.auth-认证
Jul 16 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
三步实现Django Paginator分页的方法
Jun 11 Python
python如何制作英文字典
Jun 25 Python
Python socket 套接字实现通信详解
Aug 27 Python
PyTorch使用cpu加载模型运算方式
Jan 13 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
Python自动登录QQ的实现示例
Aug 28 Python
python 使用openpyxl读取excel数据
Feb 18 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 #Python
python 解决tqdm模块不能单行显示的问题
Feb 19 #Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 #Python
Python换行与不换行的输出实例
Feb 19 #Python
Python print不能立即打印的解决方式
Feb 19 #Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 #Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 #Python
You might like
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
谈一谈javascript闭包
2016/01/28 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
亲自动手实现vue日历控件
2019/06/26 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
Python中Continue语句的用法的举例详解
2015/05/14 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
python 类之间的参数传递方式
2019/12/20 Python
python序列类型种类详解
2020/02/26 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
python 下载文件的多种方法汇总
2020/11/17 Python
Python可以用来做什么
2020/11/23 Python
python元组拆包实现方法
2021/02/28 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
应用服务器有那些
2012/01/19 面试题
总经理司机职责
2014/02/02 职场文书
主办会计岗位职责
2014/03/13 职场文书
店面出租协议书范本
2014/11/28 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js