除了块python之外,如何避免多次尝试

Mic*_*rds 0 python exception-handling

我有一些代码可以从网站下载图像.它目前的工作方式需要猜测它将从哪个URL下载文件扩展名.执行此操作的代码块如下所示:

for imageLink in imageLinks:


  try:
      urllib.request.urlretrieve(imageLink + ".png", str(threadName) + "/" + str(count) + ".png")
  except:
      try:
          urllib.request.urlretrieve(imageLink + ".jpg",str(threadName) + "/" + str(count) + ".png")
      except:
          try:
                urllib.request.urlretrieve(imageLink + ".gif",str(threadName) + "/" + str(count) + ".gif")
          except:
                urllib.request.urlretrieve(imageLink + ".webm",str(threadName) + "/" + str(count) + ".webm")
Run Code Online (Sandbox Code Playgroud)

目前代码依赖于失败以尝试别的东西.我想知道他们是否是一种拥有此功能的方式,但基本上只是看起来更好.如果它们失败,这些方法会产生相同的错误,所以我想按顺序遍历它们,直到它们工作

Q. *_*iao 5

for ext in ('.png', '.jpg', '.gif', '.webm'):
    try:
        urllib.request.urlretrieve(imageLink + ext, str(threadName) + "/" + str(count) + ext)
        break
    except:
        pass
Run Code Online (Sandbox Code Playgroud)