Soy nuevo en Python y he estado revisando las preguntas y respuestas de este sitio, en busca de una respuesta a mi pregunta. Sin embargo, soy un principiante y me resulta difícil entender algunas de las soluciones. Necesito una solución muy básica.
¿Podría alguien explicarme una solución sencilla para 'Descargar un archivo a través de http' y 'Guardarlo en el disco, en Windows', a mí?
Tampoco estoy seguro de cómo utilizar los módulos shutil y os.
El archivo que quiero descargar tiene menos de 500 MB y es un archivo .gz.Si alguien puede explicar cómo extraer el archivo y utilizar los archivos que contiene también, sería genial.
Aquí'hay una solución parcial, que escribí a partir de varias respuestas combinadas:
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
¿Podría alguien señalar los errores (nivel de principiante) y explicar algún método más fácil para hacer esto?
¡Gracias!
Una forma limpia de descargar un archivo es:
import urllib
testfile = urllib.URLopener()
testfile.retrieve("http://randomsite.com/file.gz", "file.gz")
Esto descarga un archivo de un sitio web y lo nombra file.gz
. Esta es una de mis soluciones favoritas, de https://stackoverflow.com/questions/3042757/downloading-a-picture-via-urllib-and-python.
Este ejemplo utiliza la biblioteca urllib
, y recuperará directamente el archivo de una fuente.
Como se menciona aquí:
import urllib
urllib.urlretrieve ("http://randomsite.com/file.gz", "file.gz")
EDIT:
Si todavía quieres usar peticiones, echa un vistazo a esta pregunta o a esta.
Yo uso wget.
¿Simple y buena biblioteca si quieres ejemplo?
import wget
file_url = 'http://johndoe.com/download.zip'
file_name = wget.download(file_url)
El módulo wget soporta las versiones python 2 y python 3