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中dict与set的使用
Aug 10 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python面向对象类的继承实例详解
Jun 27 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
Python面向对象程序设计示例小结
Jan 30 Python
Python变量访问权限控制详解
Jun 29 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
python深copy和浅copy区别对比解析
Dec 26 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
python语言的优势是什么
Jun 17 Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 Python
python实现计算器简易版
Dec 17 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 date与gmdate的获取日期的区别
2010/02/08 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
新浪的图片新闻效果
2007/01/13 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
微信小程序canvas实现签名功能
2021/01/19 Javascript
Python的Django框架中的Context使用
2015/07/15 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
我的画教学反思
2014/04/28 职场文书
信用卡工资证明范本
2015/06/19 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL
关于MySQL中explain工具的使用
2023/05/08 MySQL