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

当我运行我的程序,这是使用:下载数据时如何阻止NLTK输出到终端?

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

回答:

根据source code,nltk下载程序使用直接调用print()调用来报告进度。这意味着没有可以控制或预先配置的记录器。

其中一个选项是临时修改sys.stdout上飞 - 还有就是在Python redirect_stdout() context manager 3.4+:

from contextlib import redirect_stdout 

import os

import nltk

from nltk.corpus import wordnet

with redirect_stdout(open(os.devnull, "w")):

nltk.download('wordnet')

或者一些其他的选项:

  • Suppress calls to print (python)
  • Silence the stdout of a function in Python without trashing sys.stdout and restoring each function call

回答:

使用quiet=True

import nltk 

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

以上是 下载数据时如何阻止NLTK输出到终端? 的全部内容, 来源链接: utcz.com/qa/259384.html

回到顶部