簡體   English   中英

下載並解壓 Zip 文件

[英]Download and Extract Zip file

我想從一個 url 下載一個 zip 文件,但我不想暫時保存它,因為我知道下載一個 zip 文件並將其解壓縮到某個地方的唯一方法是創建一個空的 zip 文件,在那里將粘貼下載的 zip 內容然后,將其解壓縮到正確的文件夾中。 但我想下載和解壓縮而不必創建 zip 文件夾。 我嘗試了很多東西,但這些都不起作用。 有人知道怎么做嗎? (我的代碼可能很糟糕,我不知道,但我不太在意)

import io
import zipfile
import requests
import json
import os

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

url = 'https://beatsaver.com'
page = 0
num = 0
req = requests.get(url + '/api/maps/latest/' + str(page), headers=headers)
latest = json.loads(req.text)
for item in latest['docs']:
    print(latest['docs'][num]['downloadURL'])
    dl = requests.get(url + latest['docs'][num]['directDownload'])
    path = './maps/{} - {} - {}'.format(latest['docs'][num]['key'], latest['docs'][num]['name'].replace(':', '').replace('?', ''), latest['docs'][num]['uploader']['username'])
    os.mkdir(path)
    #here is where i want it to download the zip
    num += 1

由於代碼原因,無法將此添加為注釋。 但是,我認為您是這個意思。不過它沒有使用requests

現在此方法不會創建和保存任何文件。 它將直接保存提取的文件。

    from io import BytesIO
    from urllib.request import urlopen
    from zipfile import ZipFile
    zipurl = 'http://stash.compjour.org/data/1800ssa.zip'
    with urlopen(zipurl) as zipresp:
        with ZipFile(BytesIO(zipresp.read())) as zfile:
            zfile.extractall('/tmp/mystuff4')

參考:- https://svaderia.github.io/articles/downloading-and-unzipping-a-zipfile/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM