首页 > 解决方案 > Python禁用命令行模块的日志记录

问题描述

我正在尝试做的事情似乎很简单,但我找不到办法。我正在尝试在脚本中使用模块 Pipreqs,但我必须使用subprocess.call(),因为 Pipreqs 没有办法在脚本中使用它。Pipreqs 使用日志记录来记录信息,我不希望这样。Pipreqs 也没有安静模式。我尝试使用logger.setLevel(logging.WARNING),但由于我通过它调用subprocess.call()它仍然会打印信息。我也尝试过导入 Pipreqs 并将日志记录级别设置为警告,但这也不起作用。有没有办法禁用这个输出?我现在的代码如下:

import subprocess
import logging
import pipreqs
logger = logging.getLogger("pipreqs")
logger.setLevel(logging.WARNING)
subprocess.call(["pipreqs", "--force","/path/to/dir"])

标签: pythonloggingsubprocess

解决方案


您将无权访问外部进程的记录器。subprocess 模块确实具有禁用输出的标志。

subprocess.call(
  ["pipreqs", "--force","/path/to/dir"],
  stdout=subprocess.DEVNULL,
  stderr=subprocess.DEVNULL
)

推荐阅读