Dus*_*yte 15 python progress-bar tqdm
我想将当前项目(字符串表示形式)添加到 tqdm 进度栏。
\n这是没有任何附加文本的代码(非常简短):
\nfrom tqdm import tqdm\nimport time\n\nanimals = ["cat", "dog", "bird", "fish", "insect"]\n\nfor animal in tqdm(animals):\n time.sleep(1)\nRun Code Online (Sandbox Code Playgroud)\n80%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 | 4/5 [00:04<00:01, 1.14s/it]\nRun Code Online (Sandbox Code Playgroud)\n以下是显示正在处理的项目(此处为动物名称)的两种方法:
\n80%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 | 4/5 [00:04<00:01, 1.14s/it]\nRun Code Online (Sandbox Code Playgroud)\n40%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 | 2/5 [00:02<00:04, 1.46s/it, bird]\nRun Code Online (Sandbox Code Playgroud)\n和
\nprogress = tqdm(animals)\nfor animal in progress:\n progress.set_postfix_str(animal)\n time.sleep(1)\nRun Code Online (Sandbox Code Playgroud)\n60%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 | 3/5 [00:03<00:02, 1.04s/it, fish]\nRun Code Online (Sandbox Code Playgroud)\n这两种方法都添加了相当多的额外代码,并且需要指定进度条对象。我还没有找到任何更简单的方法来实现这一目标。我是否错过了 tqdm 提供的一些东西?
\n特别是,我一直在寻找一种方法来告诉 tqdm 输出__str__()其迭代器返回的项目的字符串(使用 say )。例如,
40%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 | 2/5 [00:02<00:04, 1.46s/it, bird]\nRun Code Online (Sandbox Code Playgroud)\n
看起来节省一行的唯一方法是使用 Python 3.8 中添加的海象运算符:
for animal in (pbar:= tqdm(animals)) :
pbar.set_postfix_str(animal)
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
100% 5/5 [00:05<00:00, 1.01s/it, 昆虫]