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的类变量和成员变量用法实例教程
Aug 25 Python
详解python3百度指数抓取实例
Dec 12 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
python定时关机小脚本
Jun 20 Python
使用numba对Python运算加速的方法
Oct 15 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
Python如何导出导入所有依赖包详解
Jun 08 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
python从Oracle读取数据生成图表
2020/10/14 Python
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
介绍一下游标
2012/01/10 面试题
大学生毕业自我鉴定范文
2013/11/03 职场文书
单位委托书怎么写
2014/08/02 职场文书
员工福利申请报告
2015/05/15 职场文书
初二数学教学反思
2016/02/17 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis