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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
python线程池(threadpool)模块使用笔记详解
Nov 17 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
基于python requests库中的代理实例讲解
May 07 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
python远程连接MySQL数据库
Apr 19 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
Python如何执行系统命令
Sep 23 Python
python中实现栈的三种方法
Dec 19 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
php 常用类整理
2009/12/23 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
PHP对象实例化单例方法
2017/01/19 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python中常见错误及解决方法
2020/06/21 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
旧时光糖果:Old Time Candy
2018/02/05 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
小学教研工作制度
2014/01/15 职场文书
学习决心书范文
2014/03/11 职场文书
青年文明号创建承诺
2014/03/31 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
python析构函数用法及注意事项
2021/06/22 Python