2017-12-03 144 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)