python 控制台单行刷新,多行刷新 您所在的位置:网站首页 python屏幕清空命令 python 控制台单行刷新,多行刷新

python 控制台单行刷新,多行刷新

2023-08-10 16:09| 来源: 网络整理| 查看: 265

先贴出单行刷新实现的进度条:

对于控制台的单行刷新,比较简单,先直接贴出代码:

1 strarrs = ['/','|','\\'] 2 for i in range(15): 3 sys.stdout.write(strarrs[i % 3]+'{}/15:'.format(i+1)+'#' * i+'\r') 4 sys.stdout.flush() 5 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,]/~!@#$%^&*()_+}"?{:>


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有