小能豆

必须捕获没有返回语句的函数的输出

py

我正在使用 NLTK 包,它有一个函数可以告诉我给定的句子是积极的、消极的还是中性的:

from nltk.sentiment.util import demo_liu_hu_lexicon

demo_liu_hu_lexicon('Today is a an awesome, happy day')
>>> Positive

问题是,该函数没有返回语句 - 它只是将“Positive”、“Negative”或“Neutral”打印到 stdout。它隐式返回的只是一个NoneType对象。(是该函数的源代码。)

有什么方法可以捕获这个输出(除了弄乱我的机器上的 NLTK 源代码)?


阅读 5

收藏
2025-01-14

共1个答案

小能豆

import sys
from io import StringIO

class capt_stdout:
    def __init__(self):
        self._stdout = None
        self._string_io = None

    def __enter__(self):
        self._stdout = sys.stdout
        sys.stdout = self._string_io = StringIO()
        return self

    def __exit__(self, type, value, traceback):
        sys.stdout = self._stdout

    @property
    def string(self):
        return self._string_io.getvalue()

像这样使用:

with capt_stdout() as out:
    demo_liu_hu_lexicon('Today is a an awesome, happy day')
    demo_liu_hu_lexicon_output = out.string
2025-01-14