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实现二维数组输出为图片
Apr 03 Python
django中静态文件配置static的方法
May 20 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
Python中qutip用法示例详解
Oct 02 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
如何利用Python实现n*n螺旋矩阵
Jan 18 Python
Python 匹配文本并在其上一行追加文本
May 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
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
javascript系统时间设置操作示例
2019/06/17 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
python文件与目录操作实例详解
2016/02/22 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python self用法详解
2020/11/28 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
蔻驰英国官网:COACH英国
2020/07/19 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
韩语专业本科生求职信
2013/10/01 职场文书
大学新生军训个人的自我评价
2013/10/03 职场文书
12岁生日感言
2014/01/21 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
2015年保管员工作总结
2015/04/30 职场文书
校园运动会广播稿
2015/08/19 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技