TypeError:\uu repr_uu返回非字符串(类型字节)

2024-05-18 08:34:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python client library访问Discogs API。在

下面是我尝试与Discogs API交互的一个最小示例:

from SensitiveInformation.discogs_application_info import provide_discogs_auth, provide_verifier
import discogs_client

discogs_consumer_key, discogs_consumer_secret = provide_discogs_auth()
discogs = discogs_client.Client(user_agent="ThoughfulMachineLearning",
                                consumer_key=discogs_consumer_key,
                          consumer_secret=discogs_consumer_secret)
discogs_auth_url = discogs.get_authorize_url()
discogs.get_access_token(verifier=provide_verifier())
discogs.identity()

函数provide_discogs_authprovide_verifier只是从用户授权返回使用者密钥和验证器。get_access_token按预期返回访问密钥和密码。在

但是,在最后一行,当我调用API时,我得到:

^{pr2}$

不确定这是否与IPython或客户机库有关,但希望有任何帮助。谢谢。在


Tags: keyimportclienttokenauthapiurlget
1条回答
网友
1楼 · 发布于 2024-05-18 08:34:32

这是库中的一个bug;^{} method返回python3上的字节:

def __repr__(self):
    return '<User {0!r} {1!r}>'.format(self.id, self.username).encode('utf-8')

太好了!在

通过将discogs.identity()的结果赋给变量,可以避免在IPython或任何其他交互式Python控制台中看到的问题:

^{pr2}$

尽量避免重复结果。在

可以使用以下内容动态修补该方法:

import six
from discogs_client import models

orig_repr = models.User.__repr__

def fixed_repr(self):
    r = orig_repr(self)
    if six.PY3 and isinstance(r, bytes):
        r = r.decode('utf8')
    return r

models.User.__repr__ = fixed_repr

对于其他模型,您可能也必须这样做;我在models模块中看到了更多的__repr__实现和.encode('utf8')调用。在

相关问题 更多 >