您好,登錄后才能下訂單哦!
這篇文章主要介紹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中如何控制臺單行刷新和多行刷新”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。