下载数据时如何阻止NLTK输出到终端?

时间:2017-12-03 03:36:45

标签: python nlp nltk stderr

当我运行我正在使用的程序时:

nltk.download('wordnet')
from nltk.corpus import wordnet

我得到以下输出到我的终端:

[nltk_data] Downloading package wordnet to
[nltk_data]     /Users/.../nltk_data...
[nltk_data]   Package wordnet is already up-to-date!

我的程序依赖于没有将此信息保存到终端以及生成的输出文件,因此如何防止上述行发生,或将其写入sys.stderr以便它不包含在内而不是通过print

2 个答案:

答案 0 :(得分:7)

使用quiet=True

import nltk
nltk.download('wordnet', quiet=True)

答案 1 :(得分:2)

根据source codenltk下载程序使用简单的print()调用来报告进度。这意味着没有涉及可以控制或预配置的记录器。

其中一个选项是暂时修改sys.stdout -  Python 3.4 +中有redirect_stdout() context manager

from contextlib import redirect_stdout
import os

import nltk
from nltk.corpus import wordnet


with redirect_stdout(open(os.devnull, "w")):
    nltk.download('wordnet')

或其他一些选择: