python - 下载并解压 Zip 文件
问题描述
我想从一个 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/
推荐阅读
- c# - Microsoft.Net.Compilers 仅在 MSBuild v16.3 及更高版本上受支持
- java - 我遇到了 HTTP 和 HTTPS 协议问题
- tensorflow - tf.image.yuv_to_rgb 的正确用法是什么?输出失真
- javascript - 如何正确使用 ViewChild
- cmake - “重新运行 cmake 没有构建系统参数”是什么意思?
- c++ - 预期“(”之后?
- reactjs - 在输入字段中键入会为每个字符创建一个新组件
- operating-system - 操作系统 - 进程
- d3.js - 向 D3.JS 决策树路径添加标签
- python-3.x - 替换列中的值