簡體   English   中英

下載數據時如何阻止NLTK輸出到終端?

[英]How to stop NLTK from outputting to terminal when downloading data?

當我運行我正在使用的程序時:

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

使用quiet=True

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

這個答案中提出了一個更好的解決方案。


舊答案:

根據源代碼nltk下載程序使用簡單的print()調用來報告進度。 這意味着沒有涉及可以控制或預配置的記錄器。

其中一個選項是臨時修改sys.stdout - Python 3.4+中有redirect_stdout()上下文管理器

from contextlib import redirect_stdout
import os

import nltk
from nltk.corpus import wordnet


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

或者其他一些選擇:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM