考慮到進度條輸出的靈活性,最終是以文字形式返回而不是直接列印。
這樣進度條和文字表達連線更加自由
# 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 ...