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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
python中使用序列的方法
Aug 03 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
彻底搞懂Python字符编码
Jan 23 Python
python web框架中实现原生分页
Sep 08 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
JS 判断代码全收集
2009/04/28 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
python获取外网ip地址的方法总结
2015/07/02 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Django choices下拉列表绑定实例
2020/03/13 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python configparser模块操作代码实例
2020/06/08 Python
Django如何批量创建Model
2020/09/01 Python
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
客服工作职责
2013/12/11 职场文书
《影子》教学反思
2014/02/21 职场文书
工作年限证明模板
2014/11/01 职场文书
高三教师工作总结2015
2015/07/21 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
学习党史心得体会2016
2016/01/23 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
vue2实现provide inject传递响应式
2021/05/21 Vue.js
Android中的Launch Mode详情
2022/06/05 Java/Android