如何在Jupyter Notebook中隐藏Spotipy的请求响应循环输出信息?
解决Spotipy输出冗长API请求/响应信息的问题
当然可以!那些刷屏的GET请求、响应头和细节内容,其实是Spotipy(以及它底层依赖的requests/urllib3库)输出的调试级日志信息,你完全可以通过调整日志级别来按需隐藏这些内容,不需要找什么特殊的"静默模式"参数,具体有两种实用方法:
方法1:单独控制Spotipy的日志级别
Spotipy基于Python标准库的logging模块记录日志,那些请求细节都属于DEBUG级别。你只需要把Spotipy的日志级别调高到WARNING或更高,就能直接屏蔽这些冗余输出:
import logging import spotipy from spotipy.oauth2 import SpotifyClientCredentials # 将Spotipy的日志级别设为WARNING,只显示警告及更严重的日志 logging.getLogger('spotipy').setLevel(logging.WARNING) # 正常初始化你的Spotify客户端 client_credentials_manager = SpotifyClientCredentials(client_id='你的ID', client_secret='你的密钥') sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager) # 现在调用API就不会输出冗长的请求信息了 results = sp.search(q='artist:Queen', type='artist')
方法2:彻底屏蔽所有HTTP请求相关日志
如果上面的方法还能看到一些底层requests/urllib3的日志内容,你可以把这些依赖库的日志级别也一起调高,彻底清理输出:
import logging import spotipy from spotipy.oauth2 import SpotifyClientCredentials # 批量屏蔽Spotipy、requests、urllib3的调试日志 for logger_name in ['spotipy', 'requests', 'urllib3']: logging.getLogger(logger_name).setLevel(logging.WARNING) # 后续的Spotipy调用就完全不会输出请求细节了 sp = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials(...))
补充小提示
- 要是之后需要调试API请求,只需要把日志级别改回
logging.DEBUG,就能重新看到那些请求细节了,非常灵活。 - 如果你只是临时需要隐藏输出,也可以在初始化Spotify对象时自定义
requests_session来禁用日志,但上面的日志级别调整方法更通用、更省心。
内容的提问来源于stack exchange,提问作者S.B.
相关产品推荐
相关产品推荐

