天天看點

指令行進度條實作

對于很多包管理工具而言,擁有一個進度條基本上來說是必備的,可以輕松的讓使用者知道目前程式的進度。

指令行進度條實作

指令行下其實也可以活得很精彩。

今天來學一下如何制作一個指令行下的進度條工具。回想之前用Python寫過的getpass2,用了标準輸出來實作的。和這次的進度條需求相比,感覺應該是一回事。應該就是清空上次的列印内容,然後write本行資料。

果不其然,在網上大緻搜了一下,發現很多都是使用類似的思路。那既然如此,就沒必要重複造輪子了。幹脆用人家的好了。

關于這個子產品的使用,可以通過npm進行安裝,也可以下載下傳源代碼,放到本地使用。其核心代碼超少,我就直接貼出代碼好了。

是的,就隻有這麼幾行的内容。閱讀代碼就不難發現,就是我上面說的那個思路。

接下來簡單的進行測試一下。因為對于小檔案來說,嗖的一下就完事了,是以幹脆找個大檔案,比如一個電影來進行測試。

裡面用到了我之前寫的一個Python風格的字元串格式化子產品。有需要的可以使用

來進行安裝和使用。

下面來看下運作的效果。

指令行進度條實作

其實這樣就實作了一個簡單的進度條了。但是為了使其更加通用,接下來對其進行了一個封裝。

雖然說是進行了封裝, 其實重要的還隻是percentage那部分的内容了。

運作效果,如下:

指令行進度條實作

至此,一個還算是比較通用的進度條就算是完成了。每次需要手動更新進度的時候,隻需要調用render方法即可。

單純的黑白字元,看起來挺枯燥的,下面使用一個終端彩色子產品來對其進行一下美化。

下面看下執行結果。

先看下在VSCode下的執行效果。

指令行進度條實作

然後是正常的CMD指令行下效果。

指令行進度條實作

好了,大緻就是這麼個内容了。在Linux上還有很多更加優秀的此類實作。有機會再去借鑒借鑒好了。