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

 更新时间:2020年02月19日 15:05:51   作者:whyaza  
今天小编就为大家分享一篇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下貌似是有别的解决方案

上效果图:

大部分实现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 控制台单行刷新,多行刷新实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于反爬虫的一些简单总结

    关于反爬虫的一些简单总结

    这篇文章主要介绍了关于反爬虫的一些简单总结,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 解决Ubuntu pip 安装 mysql-python包出错的问题

    解决Ubuntu pip 安装 mysql-python包出错的问题

    今天小编就为大家分享一篇解决Ubuntu pip 安装 mysql-python包出错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 利用Python实现字幕挂载(把字幕文件与视频合并)思路详解

    利用Python实现字幕挂载(把字幕文件与视频合并)思路详解

    这篇文章主要介绍了如何利用Python实现字幕挂载,把字幕文件与视频合并,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python字符串中查找子串小技巧

    Python字符串中查找子串小技巧

    这篇文章主要介绍了Python字符串中查找子串小技巧,,需要的朋友可以参考下
    2015-04-04
  • Python编写一个多线程的12306抢票程序的示例

    Python编写一个多线程的12306抢票程序的示例

    对于很多人来说,抢购火车票人们成了一个令人头疼的问题,本文主要介绍了Python编写一个多线程的12306抢票程序的示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Pandas库中iloc[]函数的使用方法

    Pandas库中iloc[]函数的使用方法

    在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先“索引”出这一部分数据,下面这篇文章主要给大家介绍了关于Pandas库中iloc[]函数的使用方法,需要的朋友可以参考下
    2023-01-01
  • ZABBIX3.2使用python脚本实现监控报表的方法

    ZABBIX3.2使用python脚本实现监控报表的方法

    今天小编就为大家分享一篇ZABBIX3.2使用python脚本实现监控报表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 解决django后台管理界面添加中文内容乱码问题

    解决django后台管理界面添加中文内容乱码问题

    今天小编就为大家分享一篇解决django后台管理界面添加中文内容乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 解析Pytorch中的torch.gather()函数

    解析Pytorch中的torch.gather()函数

    本文给大家介绍了Pytorch中的torch.gather()函数,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • 浅谈Python单向链表的实现

    浅谈Python单向链表的实现

    本文给大家简单介绍了下链表的知识,然后用Python模拟一下单链表,比较简单,初学者可以参考参考,大神可以给我点改进意见
    2015-12-12

最新评论