相关疑难解决方法(0)

通过tqdm.write()在python脚本中重定向打印命令

我正在使用tqdmPython在我们的脚本中显示控制台进度条.但是,我必须将调用print消息的函数调用到控制台,而且我无法更改.通常,在控制台中显示进度条的同时写入控制台会使显示屏变得如此:

from time import sleep
from tqdm import tqdm

def blabla():
  print "Foo blabla"

for k in tqdm(range(3)):
  blabla()
  sleep(.5)
Run Code Online (Sandbox Code Playgroud)

这会创建输出:

0%|                                           | 0/3 [00:00<?, ?it/s]Foo
blabla
33%|###########6                       | 1/3 [00:00<00:01,  2.00it/s]Foo
blabla
67%|#######################3           | 2/3 [00:01<00:00,  2.00it/s]Foo
blabla
100%|###################################| 3/3 [00:01<00:00,  2.00it/s]
Run Code Online (Sandbox Code Playgroud)

根据tqdm该方法的文档tqdm.write()提供了一种在不破坏显示的进度条的情况下将消息写入控制台的方法.因此,此片段提供了正确的输出:

from time import sleep
from tqdm import tqdm

def blabla():
  tqdm.write("Foo blabla")

for k in tqdm(range(3)):
  blabla()
  sleep(.5)
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

Foo blabla
Foo blabla
Foo blabla
100%|###################################| 3/3 …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 tqdm

13
推荐指数
3
解决办法
1万
查看次数

如何正确地将标准输出、日志记录和 tqdm 重定向到 PyQt 小部件中

长话短说

\n

答案请参见:

\n
    \n
  1. 我的 2019 年最初使用文本编辑和 stdout/stderr 流重定向接受了答案,请参阅/sf/answers/3855776501/
  2. \n
  3. 我的第二个答案,现在标记为已接受的答案:使用真正的 QProgressBar 的派生和改进方法!/sf/answers/5186428061/
  4. \n
\n

问题

\n

首先,我知道很多问题都与这个问题类似。\n但是在花了这么多时间之后,我现在向社区寻求帮助。

\n

我开发并使用了一堆依赖于 的 python 模块tqdm。\n我希望它们可以在 Jupyter、控制台或 GUI 中使用。\n在 Jupyter 或控制台中一切正常:日志记录/打印和 tqdm 进度之间没有冲突酒吧。以下是显示控制台/Jupyter 行为的示例代码:

\n
# coding=utf-8\nfrom tqdm.auto import tqdm\nimport time\nimport logging\nimport sys\nimport datetime\n__is_setup_done = False\n\n\ndef setup_logging(log_prefix):\n    global __is_setup_done\n\n    if __is_setup_done:\n        pass\n    else:\n        __log_file_name = "{}-{}_log_file.txt".format(log_prefix,\n                                                      datetime.datetime.utcnow().isoformat().replace(":", "-"))\n\n        __log_format = \'%(asctime)s - %(name)-30s - %(levelname)s - %(message)s\'\n        __console_date_format = \'%Y-%m-%d %H:%M:%S\'\n        __file_date_format = \'%Y-%m-%d %H-%M-%S\'\n\n        root …
Run Code Online (Sandbox Code Playgroud)

python logging stdout pyqt tqdm

10
推荐指数
2
解决办法
9598
查看次数

标签 统计

python ×2

tqdm ×2

logging ×1

pyqt ×1

python-2.7 ×1

stdout ×1