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中生成器和yield语句的用法详解
Apr 17 Python
Python中统计函数运行耗时的方法
May 05 Python
python创建一个最简单http webserver服务器的方法
May 08 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
详解python中docx库的安装过程
Nov 08 Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
什么是Python装饰器?如何定义和使用?
Apr 11 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
农民和部队如何穿矿
2020/03/04 星际争霸
PHP_MySQL教程-第一天
2007/03/18 PHP
改变Apache端口等配置修改方法
2008/06/05 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
Python列表计数及插入实例
2014/12/17 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
一道Delphi面试题
2016/10/28 面试题
精彩的大学生自我评价
2013/11/17 职场文书
总经理助理的职责
2014/03/14 职场文书
安全环保演讲稿
2014/08/28 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
退税申请报告怎么写
2015/05/18 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
记者节感言
2015/08/03 职场文书
安全生产标语口号
2015/12/26 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python