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错误处理详解
Sep 28 Python
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
Python中常用的8种字符串操作方法
May 06 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
pytorch 实现打印模型的参数值
Dec 30 Python
Python使用re模块验证危险字符
May 21 Python
python操作redis数据库的三种方法
Sep 10 Python
python 操作excel表格的方法
Dec 05 Python
用 Python 元类的特性实现 ORM 框架
May 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
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
php读取本地json文件的实例
2018/03/07 PHP
jquery时间下拉框小例子
2013/04/15 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
python的dict判断key是否存在的方法
2020/12/09 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
三行辞职书范文
2015/02/26 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书