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实现分割文件及合并文件的方法
Jul 10 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
Python实现好友全头像的拼接实例(推荐)
Jun 24 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
python把1变成01的步骤总结
Feb 27 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 Python
python递归下载文件夹下所有文件
Aug 31 Python
Python之指数与E记法的区别详解
Nov 21 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
Nov 17 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
白酒市场营销方案
2014/02/25 职场文书
十周年庆典策划方案
2014/06/03 职场文书
交通志愿者活动总结
2014/06/27 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
先进事迹材料范文
2014/12/29 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
工作失职检讨书范文
2015/05/05 职场文书
《称赞》教学反思
2016/02/17 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python