我正在为我参加的课程开发一个工作流程。我试图利用一个tool,它需要我上传两个文件,并提供一个电子邮件和一个作业名。在
我尝试了很多来自这个网站的建议,并阅读了请求的documentation,但似乎没有任何效果。在
这是我的(混乱)代码:
import requests, sys, urllib3, json, os
START_URL = 'https://bmm.crick.ac.uk/~svc-bmm-swarmdock/submit.cgi'
EMAIL = 'someAddress@domain.com'
if len(sys.argv) != 3:
print('Usage: -a receptor -a ligand')
sys.exit(1)
'''
with open('./Swarm Dock/pdb/1asu.pdb') as rec_file:
rec_contents = rec_file.read()
with open('./Swarm Dock/pdb/2msi.pdb') as lig_file:
lig_contents = lig_file.read()
'''
print('cwd: {}'.format(os.getcwd()))
form_data = {
'formSubmitBut': 'Submit New Job',
'jobname': 'test1',
'email': EMAIL
} #, 'receptorfile': rec_contents, 'ligandfile': lig_contents}
files = {
'receptorfile': (open('./Swarm Dock/pdb/1ASU.pdb', 'rb'), 'fakepath/1asu.pdb'), #'receptorfile': ('1ASU',open('./Swarm Dock/pdb/1ASU.pdb', 'rb'), 'plain/text'),
'ligandfile': (open('./Swarm Dock/pdb/2MSI.pdb', 'rb'), 'fakepath/2msi.pdb')
}
response = requests.post(START_URL, files=files, data=form_data)
print(response.content)
输出如下:
^{pr2}$正如您在输出中看到的,jobname和email字段被正确填写。我不明白为什么id='jserrormsg',id='ligfileconfirm'和id='recfileconfirm'的输出没有显示任何值。似乎因为某种原因没有提交表格。在
我试过:
form_data = {
'formSubmitBut': 'Submit New Job',
'jobname': 'test1',
'email': EMAIL }
files = {
'receptorfile': open('./Swarm Dock/pdb/1ASU.pdb', 'rb'),
'ligandfile': open('./Swarm Dock/pdb/2MSI.pdb', 'rb')
}
response = requests.post(START_URL, files=files, data=form_data)
以及
form_data = {
'formSubmitBut': 'Submit New Job',
'jobname': 'test1',
'email': EMAIL
}
files = {
'receptorfile': ('1asu.pdb', open('./Swarm Dock/pdb/1ASU.pdb', 'rb'), 'application/vnd.palm', {'Expires': '0'}),
'ligandfile': ('2msi.pdb', open('./Swarm Dock/pdb/2MSI.pdb', 'rb'), 'application/vnd.palm', {'Expires': '0'})
}
response = requests.post(START_URL, files=files, data=form_data)
print(response.content)
以及
import requests, sys, urllib3, json, os
from requests_toolbelt.multipart.encoder import MultipartEncoder
multipart_data = MultipartEncoder(
fields={
'receptorfile': ('1asu.pdb', open('./Swarm Dock/pdb/1ASU.pdb', 'rb'), 'text/plain', {'Expires': '0'}),
'ligandfile': ('2msi.pdb', open('./Swarm Dock/pdb/2MSI.pdb', 'rb'), 'text/plain', {'Expires': '0'}),
'jobname': 'test1',
'email': EMAIL
}
)
response = requests.post(START_URL, data=multipart_data, headers={'Content-Type': multipart_data.content_type})
print('Status Code: {}'.format(response.status_code))
print(response.content)
响应码为200,输出同上。在
目前没有回答
相关问题 更多 >
编程相关推荐