python-3.x For循环从url下载并解压缩zip文件

zpqajqem  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(186)

对于为什么我无法让此代码执行我希望它执行的操作,有人有什么建议吗?我正在尝试编写一个脚本,每周可以保存我几个小时的时间。我需要下载83个zip文件,将它们解压缩,导入到ArcGIS Pro中,然后通过一系列地理处理工具运行这些文件,然后编译结果。现在我正在手动执行此操作。我希望尽可能地将这个过程自动化。
我可以使用下面的代码片段来下载和提取一个文件,但我似乎不能让它与for循环一起工作。

import requests, zipfile
from io import BytesIO

url = 'https://www.deq.state.mi.us/gis-data/downloads/waterwells/Alcona_WaterWells.zip'

filename = url.split('/')[-1]

req = requests.get(url)

zipfile = zipfile.ZipFile(BytesIO(req.content))
zipfile.extractall(r'C:\Users\UserName\Downloads\Water_Wells')

我已经创建了一个包含所有83个url的url列表。这些url不会改变,内容会定期更新。这个for循环只返回第一个县,就像上面的代码片段一样。我在这里只包括了其中的几个文件。

url_list = ['https://www.deq.state.mi.us/gis-data/downloads/waterwells/Alcona_WaterWells.zip',
           'https://www.deq.state.mi.us/gis-data/downloads/waterwells/Alger_WaterWells.zip',
           'https://www.deq.state.mi.us/gis-data/downloads/waterwells/Allegan_WaterWells.zip']

for link in url_list:
    filename = url.split('/')[-1]

    req = requests.get(url)

zipfile = zipfile.ZipFile(BytesIO(req.content))
zipfile.extractall(r'C:\Users\UserName\Downloads\Water_Wells')
fdbelqdn

fdbelqdn1#

您可以尝试以下方法:

import urllib.request
import zipfile

urls = [url1, url2, url3]

for url in urls:
    filename = url.split('/')[-1]
    urllib.request.urlretrieve(url, filename)
    with zipfile.ZipFile(filename, 'r') as zip_ref:
        zip_ref.extractall()

相关问题