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列表list数组array用法实例解析
Oct 28 Python
简单介绍Python中的JSON使用
Apr 28 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
利用python汇总统计多张Excel
Sep 22 Python
python mock测试的示例
Oct 19 Python
判断Python中的Nonetype类型
May 25 Python
Python django中如何使用restful框架
Jun 23 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
Python 多线程的实例详解
2017/09/07 Python
浅析Python数据处理
2018/05/02 Python
Python如何定义有可选参数的元类
2020/07/31 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
银行职员个人的工作自我评价
2014/02/15 职场文书
《中华少年》教学反思
2014/02/15 职场文书
大学生自荐材料范文
2014/12/30 职场文书
沈阳故宫导游词
2015/01/31 职场文书
小学运动会通讯稿
2015/07/18 职场文书