Python隐藏warning和日志输出

最近跑程序时经常会出现一些warning或者第三方库的一些日志输出,这些东西有时会影响到其他程序对Python脚本的输出的读取。下面记录遇到的几种情况和对应的解决方案。

jieba 的日志输出

使用jieba的时候,会遇到以下情况:

Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\hello\AppData\Local\Temp\jieba.cache
Loading model cost 0.888 seconds.
Prefix dict has been built succesfully.

这种情况,把日志关闭就可以了。
logging日志有5种级别,
从低到高是

1 DEBUG
2 INFO
3 WARNING
4 ERROR
5 CRITICAL

这里只要比debug的级别高,就可以屏蔽debug级别的输出。

import logging
jieba.setLogLevel(logging.INFO)

gensim warning

使用gensim的时候遇到了以下两种警告

C:\Users\hello\AppData\Local\Programs\Python\Python36\lib\site-packages\gensim\utils.py:1212: UserWarning: detected Windows; aliasing chunkize to chunkize_serial
  warnings.warn("detected Windows; aliasing chunkize to chunkize_serial")
C:\Users\hello\AppData\Local\Programs\Python\Python36\lib\site-packages\gensim\matutils.py:718: FutureWarning: Conversion of the second argument of issubdtype from `int` to `np.signedinteger` is deprecated. In future, it will be treated as `np.int32 == np.dtype(int).type`.
  if np.issubdtype(vec.dtype, np.int):

解决方案:

warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')
warnings.filterwarnings(action='ignore', category=FutureWarning, module='gensim')

关于这个方法的官方文档:

tensorflow 警告

import os
os.environ["TF_CPP_MIN_LOG_LEVEL"]='1'
# 默认的显示等级,显示所有信息
os.environ["TF_CPP_MIN_LOG_LEVEL"]='2'
# 只显示 warning 和 Error  
os.environ["TF_CPP_MIN_LOG_LEVEL"]='3'
# 只显示 Error 

通常把 level设成2,就会屏蔽警告信息了。

你可能感兴趣的:(Python隐藏warning和日志输出)