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详细介绍
Jan 09 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
Python实现UDP程序通信过程图解
May 15 Python
Python如何转换字符串大小写
Jun 04 Python
浅谈Django前端后端值传递问题
Jul 15 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
python3访问字典里的值实例方法
Nov 18 Python
5行Python代码实现一键批量扣图
Jun 29 Python
python ConfigParser库的使用及遇到的坑
Feb 12 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 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中zip_open()函数用法
2019/02/15 PHP
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
js实现返回顶部效果
2017/03/10 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
Vue数据绑定实例写法
2019/08/06 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python使用剪切板的方法
2017/06/06 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
请介绍一下WSDL的文档结构
2013/03/17 面试题
幼儿园教师备课制度
2014/01/12 职场文书
学校周年庆活动方案
2014/08/22 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
python之基数排序的实现
2021/07/26 Python