python 控制台单行刷新,多行刷新实例
2020-03-11 16:30
453 查看
先贴出单行刷新实现的进度条:
对于控制台的单行刷新,比较简单,先直接贴出代码:
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下貌似是有别的解决方案
上效果图:
大部分实现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 控制台单行刷新,多行刷新实例就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- Python3 单行多行万能正则匹配方法
- Python单行注释与多行注释
- python 信息同时输出到控制台与文件的实例讲解
- python Tkinter的图片刷新实例
- Python中的单行、多行、中文注释
- Python 正则表达式里的单行s和多行m模式
- python实现文本进度条 程序进度条 加载进度条 单行刷新功能
- python 单行注释 多行注释 批量注释 中文注释
- Python测试用例生成脚本(合并相应单元格以及写入单行数据)代码实例
- Python3基础 函数名.__doc__显示一个函数的单行与多行函数文档
- python 简单文本进度条 程序进度条 加载进度条 单行刷新
- Python测试用例生成脚本(合并相应单元格以及写入单行数据)代码实例
- python将多行字符串转换为单行字符串
- Python控制台输出时刷新当前行内容而不是输出新行
- python 读入多行数据的实例
- python 通过logging写入日志到文件和控制台的实例
- python注释方法(单行、多行)
- Python:单行多行注释
- js正则表达式中的单行模式与多行模式实例分析
- 控制台单行刷新显示程序进度