如何解决Python - 使用 urllib 的 url 请求的尝试/异常和退出代码
我的代码中有一些 try 语句。里面有几个步骤使用“with”创建url连接。
我的问题是: 即使某些 url 连接不起作用,我的代码(数据不是 POST 或 UPDATE)也被标记为已完成,返回代码为 0。我需要更改它。我想为每个 url 连接创建一个单独的条件(如果失败,则给出退出代码“xx”并且未完成)。
我尝试为每个 url 连接传递第一个主要的“尝试”和 craete 尝试,但这个完全不能正常工作。
这是我的代码的一部分。
try:
for my_name in names:
if my_name in MyCatalog:
cal_select = my_name[1:]
resource_name = my_name
# 1ST URL CONNECTION
getResourceData = {
"id": resource_name
}
getResourceRequest = urllib.request.Request( url = 'www.mypage.com',method = "POST",data=bytes(urllib.parse.urlencode(getResourceData).encode("utf-8")))
getResourceRequest.add_header("Content-type","application/x-www-form-urlencoded; charset=UTF-8")
with opener.open(getResourceRequest,timeout=2) as getResourceResp:
getResourceResponseData = json.loads(getResourceResp.read().decode("utf-8"))
bkp_file_name = str(my_name + '_bkp.txt')
local_filetemp = os.path.join(dir_name,bkp_file_name)
with open(local_filetemp,"w") as g:
resource_response_cal = json.dump(getResourceResponseData,g,ensure_ascii=False,indent=4)
# 2ND URL CONNECTION
updateResourceData = {
"id": resource_name,"simpleId": resource_name,"data": [ ],}
updateResourceRequest = urllib.request.Request( url = 'www.mypage.com',method ="POST",data=bytes(urllib.parse.urlencode(updateResourceData,True).encode("utf-8")))
updateResourceRequest.add_header("Content-type","application/x-www-form-urlencoded; charset=UTF-8")
with opener.open(updateResourceRequest,timeout=2) as updateResourceResp:
updateResourceResponseData = json.loads(updateResourceResp.read().decode("utf-8"))
# 2ND URL CONNECTION - part 2
with open(data_filename,'r') as data_File:
data_F = data_File.read()
update2ResourceData = {
"id": resource_name,"data": [ data_F ],}
update2ResourceRequest = urllib.request.Request( url = 'www.mypage.com',data=bytes(urllib.parse.urlencode(update2ResourceData,True).encode("utf-8")))
update2ResourceRequest.add_header("Content-type","application/x-www-form-urlencoded; charset=UTF-8")
with opener.open(update2ResourceRequest,timeout=2) as update2ResourceResp:
update2ResourceResponseData = json.loads(update2ResourceResp.read().decode("utf-8"))
elif my_name not in MyCatalog:
pass
else:
print('Something not right')
except:
print('ERROR.Try again.')
sys.exit(10)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。