在将二进制格式更改为base64时除去额外的“b”

2024-04-27 04:35:59 发布

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

我有个奇怪的问题。我正在使用一个ebisoap服务,我正在运行三个迭代。在第一次迭代中,我运行代码没有问题,因为变量'selectedHits'是空的。在第一次迭代结束时,我更新变量'selectedHits',然后将其更改为二进制格式,然后再更改为base64格式(因为这个变量必须是base64格式)。这是我代码的一部分:

jobID=''; selectedHits=''
for e in range(1,4):
    inputparam = client.factory.create('InputParameters')
    inputparam.scores=5
    inputparam.alignments=5
    inputparam.previousjobid = jobID
    inputparam.selectedHits = selectedHits

    response = client.service.run('Info@gmail.com',name,inputparam)
    jobID=response
    selectedHits=str(base64.b64encode(bytes(selectedHits, 'utf-8')),'utf-8')
    #print(selectedHits)
    #print(response)

想象一下,我们新的selectedHits如下所示:

b'U1A6RlJEQ19FQ09MSQpTUDpGUkRDX1NISURTClRSOkQyVE1CM19DSVRSSQpTUDpGUkRDX1NBTFRZClRSOkQ0QkZKMV85RU5UUgo='

当我在第二次迭代中使用这个新的'selectedHits'而不是得到我得到的结果'Info@gmail.com'重复!!!当我在这个新的“selectedHits”的第一部分手动删除字符“b”时,我将得到结果。当我尝试用不同的方法(这里使用以下代码)自动消除字符“b”时:

selectedHits=str(base64.b64encode(bytes(selectedHits, 'utf-8')),'utf-8')

,我大部分没有得到结果,我会得到错误(总结如下):

ValueError: invalid literal for int() with base 16: b''
http.client.IncompleteRead: IncompleteRead(0 bytes read)
raise IncompleteRead(b''.join(value))
http.client.IncompleteRead: IncompleteRead(5228 bytes read)

我很困惑,不知道该怎么办。当我自动消除“b”时,我不会得到结果。当我保留这个“b”字时,我也不会得到结果!!只需手动删除字符并对selectedHits使用以下值,我就能得到答案:

'U1A6RlJEQ19FQ09MSQpTUDpGUkRDX1NISURTClRSOkQyVE1CM19DSVRSSQpTUDpGUkRDX1NBTFRZClRSOkQ0QkZKMV85RU5UUgo='

我应该提到我正在用python3.6编写代码。你知道吗

我搜索了stackoverflow,找到了很多方法来消除这个多余的'b',但在这种情况下,这些方法无效,问题也没有得到解决。你知道吗

我想知道有没有人能帮我解决这个问题。你知道吗

谢谢


Tags: 方法代码infoclientforbytesresponse格式
1条回答
网友
1楼 · 发布于 2024-04-27 04:35:59

我认为这是一种服务器问题…昨晚我尝试了以下方法,得到了答案:

首先,我认为所有这些错误都是因为在初始化“selectedHits”时出错:

selectedHits=  ''

我们说过selectedHits必须是二进制和base64格式;因此初始化值也必须是二进制形式;因此我们将初始化“selectedHits”设置为二进制形式,如下所示:

selectedHits=''
selectedHits=base64.b64encode(bytes(selectedHits, 'utf-8'))

我还将获取最终“selectedHits”的代码更改为:

selectedHits=base64.b64encode(bytes(selectedHits, 'utf-8'))

所有的问题和错误都解决了。。。但今天我又试了一次,结果却没有收到,我输入了很多电子邮件地址!你知道吗

我尝试将selectedHits改为binary,然后是base64,然后在初始化和更新时(在代码末尾)又改为string,我得到了正确的答案,所以我认为这主要是一种服务器问题,而不是技术编程错误。你知道吗

谢谢

相关问题 更多 >