如何将pywhatkit.info()方法的输出存入变量?赋值无效直接输出至控制台
解决pywhatkit.info()输出无法存入变量的问题
问题根因
pywhatkit 内置的 info() 方法没有设计正式的返回值,方法运行时会直接将抓取到的百科内容通过标准输出打印到控制台,不会将内容以字符串形式返回。直接执行output = pywhatkit.info(search, lines=15)时,变量output拿到的实际是函数的默认返回值None,无法存储需要的目标文本内容。
可行实现方案
不需要修改pywhatkit的源码,通过Python标准库提供的标准输出重定向能力,临时把原本要输出到控制台的内容导入字符串缓冲区,待方法执行完成后再取出缓冲区内容即可。
实现步骤
- 导入需要的标准库组件,不需要额外安装第三方依赖
import io from contextlib import redirect_stdout import pywhatkit
- 封装可捕获输出的通用函数
def capture_pywhatkit_info(search_keyword, line_count=15): # 创建可存储字符串的内存缓冲区 output_buffer = io.StringIO() # 临时将程序的标准输出指向缓冲区 with redirect_stdout(output_buffer): pywhatkit.info(search_keyword, lines=line_count) # 读取缓冲区中存储的全部输出内容 captured_text = output_buffer.getvalue() output_buffer.close() # 返回捕获到的完整文本 return captured_text
- 实际调用时,即可将完整输出存入变量,不会直接打印到控制台
search = "Python 编程语言" # 文本内容将完整存入info_result变量 info_result = capture_pywhatkit_info(search, line_count=15)
注意事项
- 该方案会捕获
pywhatkit.info()执行过程中所有打印到标准输出的内容,若方法运行时附带打印了其他提示类信息,也会被一并存入结果变量,可通过常规字符串处理逻辑做过滤。 - 标准输出的重定向是临时生效的,
with代码块执行结束后,程序会自动恢复默认的控制台输出逻辑,不会影响其他代码的正常打印行为。
内容的提问来源于stack exchange,提问作者Zeeshan
相关产品推荐
相关产品推荐

