Je suis nouveau sur Python et j'ai parcouru les questions / réponses sur ce site, pour une réponse à ma question. Cependant, je suis un débutant et j'ai du mal à comprendre certaines des solutions. J'ai besoin d'une solution très basique.
Quelqu'un pourrait-il m'expliquer une solution simple pour «Télécharger un fichier via http» et «Enregistrer sur le disque, sous Windows»?
Je ne sais pas non plus comment utiliser les modules shutil et os.
Le fichier que je veux télécharger fait moins de 500 Mo et est un fichier d'archive .gz. Si quelqu'un peut expliquer comment extraire l'archive et utiliser les fichiers qu'il contient également, ce serait génial!
Voici une solution partielle, que j'ai écrite à partir de diverses réponses combinées:
import requests
import os
import shutil
global dump
def download_file():
global dump
url = "http://randomsite.com/file.gz"
file = requests.get(url, stream=True)
dump = file.raw
def save_file():
global dump
location = os.path.abspath("D:\folder\file.gz")
with open("file.gz", 'wb') as location:
shutil.copyfileobj(dump, location)
del dump
Quelqu'un pourrait-il signaler des erreurs (niveau débutant) et expliquer des méthodes plus simples pour le faire?
Merci!
testfile.retrieve("http://example.com/example.rpm", "/tmp/test.rpm")
.Comme mentionné ici :
EDIT:
Si vous souhaitez toujours utiliser des requêtes, jetez un œil à cette question ou à celle-ci .la source
requests
est extrêmement utile par rapport à l'utilisationurllib
d'une API REST. À moins que vous ne cherchiez à faire beaucoup plus, cela devrait être une bonne chose.import urllib.request
urllib.request.urlretrieve(url, filename)
J'utilise wget .
Bibliothèque simple et bonne si vous voulez donner des exemples?
le module wget prend en charge les versions python 2 et python 3
la source
Quatre méthodes utilisant wget, urllib et request.
testRequest - 4469882 appels de fonction (4469842 appels primitifs) en 20,236 secondes
testRequest2 - 8580 appels de fonction (8574 appels primitifs) en 0,072 seconde
testUrllib - 3810 appels de fonction (3775 appels primitifs) en 0,036 seconde
testwget - 3489 appels de fonction en 0,020 seconde
la source
Pour Python3 +
URLopener
est obsolète. Et lorsqu'il est utilisé, vous obtiendrez une erreur comme ci-dessous:Alors, essayez:
la source
Solution Windows exotique
la source
J'ai commencé dans cette voie car le wget d'ESXi n'est pas compilé avec SSL et je voulais télécharger un OVA à partir du site Web d'un fournisseur directement sur l'hôte ESXi qui se trouve à l'autre bout du monde.
J'ai dû désactiver le pare-feu (paresseux) / activer https en modifiant les règles (correct)
a créé le script python:
Les bibliothèques ESXi sont en quelque sorte jumelées, mais l'installateur open source de belette semblait utiliser urllib pour https ... donc cela m'a inspiré à suivre cette voie
la source
Une autre façon propre d'enregistrer le fichier est la suivante:
la source
urllib.urlretrieve
ouurllib.URLopener().retrieve
non ce que vous vouliez dire ici.