Télécharger un fichier zip et l'extraire dans la mémoire à l'aide de Python3
Je voudrais télécharger un fichier zip à partir d'internet et l'extraire.
Je préfère utiliser demandes. Je ne veux pas écrire sur le disque.
Je savais comment le faire qu'en Python2, mais je suis paumé pour python3.3. Apparemment, zipfile.Zipfile veut un fichier objet en forme mais je ne sais pas comment obtenir à partir de ce que les demandes de retours.
Si vous savez comment le faire avec urllib.demande, je serais curieux de voir comment vous le faites trop.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé comment faire:
Ce qui me manquait :
request.content
doit être utilisé pour accéder les octetsio.BytesIO
est le fichier correct-comme l'objet debytes
.zipDocument = zipfile.ZipFile(io.BytesIO(request.content))
puis extraire/enregistrer:zipDocument.extractall()
À l'aide de Requêtes, ce qui peut être fait très simplement.
L'Aide De La Chaîne.IO vous pouvez faire un fichier objet semblable pour les réponses le contenu de l'attribut.
Si vous voulez extraire dans le répertoire vous pouvez utiliser le ZipFile de extractall() la fonction
ZipFile
etresponse.content
besoin d'octets.io.ByteIO
est la chose à utiliserzipDocument.extractall()
etio.BytesIO
. I. e.,zipfile.ZipFile(io.BytesIO(response.content))
(note: ne peut pas modifier la réponse)Voici une autre approche de l'économie d'avoir à installer des demandes: