Python 進度條簡單實現

2021-09-26 08:45:50 字數 3592 閱讀 4696

考慮到進度條輸出的靈活性,最終是以文字形式返回而不是直接列印。

這樣進度條和文字表達連線更加自由

# python 3.6

# author: scc_hy

# create date: 2019-08-20

# function: 列表遍歷進度條

# file_name: progressing

class

progress()

:"""

對列表遍歷,返回對應遍歷進度

param lsit_i: list

param width: int 進度條長度

例子:m = ['asdas', 'asdas','qwe124', 'asd112', '12asdx', '12asdx', '12asdx']

p = progress(m, width = 45)

for i in m:

msg = p.progress()

print('目前列印: {}, 進度: {}'.format(i, msg))

"""def__init__

(self, list_i, width =25)

: self.list_i = list_i

self.list_long =

len(list_i)

self.width = width

self.start =

0def

get_progress

(self, percent =0)

:"""

百分比顯示方式

"""left = percent * self.width // self.list_long

pct = percent * self.width / self.list_long

right = self.width - left

left_now =

'#'* left

right_now =

' '* right

mult =

100/ self.width

return

"[{}{}] %"

.format

(left_now, right_now, pct * mult)

defflush_percent

(self)

:"""

重新整理開始位置

"""self.start +=

1def

progress

(self)

:"""

輸出進度條

"""if self.start <= self.list_long:

self.flush_percent(

) msg = self.get_progress(self.start)

return msg

if __name__ ==

'__main__'

: m =

['asdas'

,'asdas'

,'qwe124'

,'asd112'

,'12asdx'

,'12asdx'

,'12asdx'

] p = progress(m, width =45)

for i in m:

msg = p.progress(

)print

('目前列印: {}, 進度: {}'

以下是不完整指令碼

import os

import re

import argparse

from datetime import datetime

from progressing import progress

defcount_lines

(filroot)

: out_name =

'out_{}.csv'

.format

(datetime.now(

).strftime(

'%y%d%m'))

outfil = os.path.join(filroot, out_name)

for root, dirs, files in os.walk(filroot)

:# 批量讀取

len_out =

0 files_csv =

[i for i in files if

'csv'

in i and i != out_name]

p = progress(files_csv)

for i in files_csv:

fil = os.path.join(filroot, i)

f =open

(fil,

'r', encoding=

'utf-8'

) f_read = f.read(

) f.close(

)# 記錄行數

cnt = re.findall(r'\n'

, f_read, re.s)

len_out +=

len(cnt)

msg = p.progress(

)print

('{} 合併檔案: {}, {}行.'

.format

(msg, i,

len(cnt)))

# 依次寫入需要

f1 =

open

(outfil,

'a+'

, encoding=

'utf-8'

) words = re.

compile

("'"

) new_f = words.sub(

'', f_read, re.s)

f1.write(new_f)

f1.close(

)return len_out +

1if __name__ ==

'__main__'

: args = parse_args(

) filroot = args.base_root

final_fil =

'out_{}.csv'

.format

(datetime.now(

).strftime(

'%y%d%m'))

print

("最終檔案: {}, {}行"

.format

(final_fil, count_lines(filroot)))

input

("\n輸入任意字元結束"

python 進度條的簡單實現

import time 主函式 defmain n for i in range n time.sleep 1.5 假設每個任務的等待時間是1.5s show i 1 n 進度條列印函式 defshow perfin barlen 20 進度條的長度 numfin round barlen perf...

python 進度條的簡單實現

import time 主函式 defmain n for i in range n time.sleep 1.5 假設每個任務的等待時間是1.5s show i 1 n 進度條列印函式 defshow perfin barlen 20 進度條的長度 numfin round barlen perf...

python實現進度條

sys.stdout.write 輸出不會自動換行,沒有end,可用轉義字元自行控制 n 換行 r 回車到本行首,可重新整理輸出 如用sys.stdout.write 和 r實現自定義進度條 import time import sysdef main j 0 for i in range 100 ...