2017-12-03 19 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에 따르면, print() 진도를보고하기 위해 다운로더를 사용하는 nltk입니다. 즉, 제어하거나 사전 구성 할 수있는 로거가 필요하지 않습니다. 옵션

하나는 즉석에서 일시적으로 sys.stdout을 수정하는 것입니다 - 이 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') 

또는 몇 가지 다른 옵션 :

0

사용 quiet=True :

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