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 Django批量导入数据
Mar 25 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
Python Django框架模板渲染功能示例
Nov 08 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
python中@contextmanager实例用法
Feb 07 Python
Python实现曲线拟合的最小二乘法
Feb 19 Python
python 爬取天气网卫星图片
Jun 07 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实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
PHP7 其他修改
2021/03/09 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
Three.js基础学习教程
2017/11/16 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
python中字符串前面加r的作用
2015/06/04 Python
Python函数返回值实例分析
2015/06/08 Python
如何在django中实现分页功能
2020/04/22 Python
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
儿科主治医生个人求职信
2013/09/23 职场文书
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
初一地理教学反思
2014/01/16 职场文书
国际会计专业求职信
2014/08/04 职场文书
简历中自我评价范文
2015/03/11 职场文书
材料员岗位职责范本
2015/04/11 职场文书
实习单位意见
2015/06/04 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
Redis 哨兵机制及配置实现
2022/03/25 Redis