2017-12-03 114 views
1

当我运行我的程序,这是使用:下载数据时如何阻止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

回答

1

根据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') 

或者一些其他的选项:

0

使用quiet=True

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