我遇到了一个奇怪的问题。我正在使用EBI SOAP服务之一,并且我正在运行三次迭代。在第一次迭代中,我在运行代码时没有问题,因为变量' 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'反复!!!当我手动消除字符' b'在这个新的' selectedHits'的第一部分,我会得到结果。当我试图消除角色' 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='
我应该提一下,我在python 3.6中编写代码。
我搜索了stackoverflow并找到了很多方法来摆脱这个额外的' b'但是在这种情况下它们没有效果并且问题没有得到解决。
我想知道是否有人有任何想法帮助我解决这个问题。
由于
答案 0 :(得分:0)
我认为这是一种服务器问题......昨晚我尝试了以下内容并得到了答案:
首先我认为所有这些错误都是出于'selectedHits'初始化错误的原因:
selectedHits= ''
我们说selectedHits必须是二进制和base 64格式;所以初始化值也必须是二进制形式;所以我们将初始化'selectedHits'设置为二进制形式,如下所示:
selectedHits=''
selectedHits=base64.b64encode(bytes(selectedHits, 'utf-8'))
我还将最终'selectedHits'的代码更改为:
selectedHits=base64.b64encode(bytes(selectedHits, 'utf-8'))
所有这些问题和错误都得到了解决......但今天我再次尝试了,而不是得到结果,我输入了很多电子邮件地址!
我尝试将'selectedHits'更改为二进制,然后更改为base64,然后再次将其更改为初始化和更新(在代码末尾),我得到了正确答案,所以我认为它主要是一种服务器问题而不是技术编程错误。
由于