1. 程式人生 > >[terminal]關於進度條的學習

[terminal]關於進度條的學習

try 關於 context 源碼 研究 ive att .get ansi

在PowerShell中隱藏光標

在pip的源碼C:\Python36\Lib\site-packages\pip\utils\ui.py中發現了:

 1 @contextlib.contextmanager
 2 def hidden_cursor(file):
 3     # The Windows terminal does not support the hide/show cursor ANSI codes,
 4     # even via colorama. So don‘t even try.
 5     if WINDOWS:
 6         yield
 7     #
We don‘t want to clutter the output with control characters if we‘re 8 # writing to a file, or if the user is running with --quiet. 9 # See https://github.com/pypa/pip/issues/3418 10 elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: 11 yield 12 else: 13 file.write(HIDE_CURSOR)
14 try: 15 yield 16 finally: 17 file.write(SHOW_CURSOR)

本來都打算放棄了, 第二天在windows上PowerShell中一試居然可以

具體HIDE_CURSOR的代碼在C:\Python36\Lib\site-packages\pip\_vendor\progress\helpers.py文件中

1 HIDE_CURSOR = \x1b[?25l
2 SHOW_CURSOR = \x1b[?25h

跟進度條的鬥爭, 從sys.stdout.write()和sys.stdout.flush(), 到progressbar2, 再到tqdm, 再到之後因為tqdm在jupyter notebook中好看, 於是折騰anaconda, 最終試著研究tqdm源碼, 發現ascii參數, 再到研究pip源碼,著實學到不少, 不過像本少這種門外少年, 還是需要時間慢慢來, 才能接受看源碼的設定. 苦笑...

最後附上個人定制進度...稱不上條了....

[terminal]關於進度條的學習