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 24 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
Python语言的变量认识及操作方法
Feb 11 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
python实战之90行代码写个猜数字游戏
Apr 22 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制作新闻系统的思路
2006/10/09 PHP
php 常用类整理
2009/12/23 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
javascript填充默认头像方法
2018/02/22 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
复习Python中的字符串知识点
2015/04/14 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Python单例模式实例详解
2017/03/01 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
python 调试冷知识(小结)
2019/11/11 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Python random模块的使用示例
2020/10/10 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
Python中的流程控制详解
2021/02/18 Python
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
开展批评与自我批评发言材料
2014/05/15 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
高考学习决心书
2015/02/04 职场文书
2015年技术员工作总结
2015/04/10 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
vue实现移动端div拖动效果
2022/03/03 Vue.js
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技