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实现web端用户登录和注册功能的教程
Apr 30 Python
Python操作MongoDB详解及实例
May 18 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
Django学习笔记之ORM基础教程
Mar 27 Python
python实现pdf转换成word/txt纯文本文件
Jun 07 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
python 创建一维的0向量实例
Dec 02 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
Python实现生活常识解答机器人
Jun 28 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
Javascript执行流程细节原理解析
2020/05/14 Javascript
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python中列表和元组的区别
2017/12/18 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
分公司负责人任命书
2014/06/04 职场文书
行政求职信
2014/07/04 职场文书
不错的求职信范文
2014/07/20 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
关于运动会的广播稿
2014/09/22 职场文书
教师辞职信范文
2015/02/28 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
赤壁观后感(2)
2015/06/15 职场文书