Python禁用命令行模块的日志记录

时间:2020-06-27 19:59:56

标签: python logging subprocess

我正在尝试做的事情看起来很简单,但是我找不到解决方法。我正在尝试在脚本中使用模块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"])

1 个答案:

答案 0 :(得分:1)

您将无权访问记录器以进行外部处理。子流程模块确实具有用于禁用输出的标志。

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