代码里的调用
for i in tqdm(generator(), total=gr.size, desc="writing"):
然后在 shell 里再重定向到log_file
python3 script.py >> log_file 2>&1
这是个 cron 定时脚本,第二天等这个脚本执行结束后,用 tail 去查看
tail -100 log_file
然后发现竟然会把进程条从 0 到 100 再打印一遍,这是为啥呢? 就是它为啥不是直接显示的 100%进度条呢?
补充说明下: 它不是梯形打印
writing: 10%|█ | 2230000/2430799 [1:22:45<5:22:45, 125.52it/s]
writing: 30%|██ | 6230000/2430799 [3:22:45<5:22:45, 125.52it/s]
writing: 50%|███ | 10230000/2430799 [3:22:45<5:22:45, 125.52it/s]
而是在单行里一直从 0 打印到 100
1
thinszx 2023-08-01 10:50:41 +08:00
输出是不是没有换行符?可能文件里都是一行?
|
2
Morriaty OP @thinszx 是一行,但我的问题是,为什么不是只直接打印 100%这一行的结果,而实际情况是它在一行里把 0%-100%这个过程又重复了一遍
|
3
thinkershare 2023-08-01 11:21:41 +08:00 1
tqdm 不适合重定向,但对输出做了刷新,重定向收到网络和 I/O 的影响,会出现各种乱七八糟的结果。
|
4
cbythe434 2023-08-01 11:33:08 +08:00 2
tqdm 输出的是\r
换行(\r ):每次光标移到本行的行首位置处 tail 是看\n 的,必须所有\r 刷完 |
5
tinytoadd 2023-08-01 11:44:57 +08:00 via iPhone 1
|