Soy nuevo en Python y he estado revisando las preguntas y respuestas de este sitio para obtener 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 simple para 'Descargar un archivo a través de http' y 'Guardarlo en el disco, en Windows'?
Tampoco estoy seguro de cómo usar 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 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 errores (nivel principiante) y explicar métodos más fáciles para hacer esto?
¡Gracias!
testfile.retrieve("http://example.com/example.rpm", "/tmp/test.rpm")
.Como se menciona aquí :
EDIT:
Si aún desea utilizar solicitudes, eche un vistazo a esta pregunta o esta .fuente
requests
es extremadamente útil en comparación conurllib
cuando se trabaja con una API REST. A menos que quiera hacer mucho más, esto debería ser bueno.import urllib.request
urllib.request.urlretrieve(url, filename)
Yo uso wget .
¿Biblioteca simple y buena si quieres un ejemplo?
El módulo wget admite las versiones python 2 y python 3
fuente
Cuatro métodos que utilizan wget, urllib y request.
testRequest - 4469882 llamadas a funciones (4469842 llamadas primitivas) en 20.236 segundos
testRequest2 - 8580 llamadas a funciones (8574 llamadas primitivas) en 0.072 segundos
testUrllib - 3810 llamadas a funciones (3775 llamadas primitivas) en 0.036 segundos
testwget - 3489 llamadas a funciones en 0.020 segundos
fuente
Para Python3 +
URLopener
está en desuso. Y cuando lo use, obtendrá el error de la siguiente manera:Entonces, intente:
fuente
Solución exótica de Windows
fuente
Comencé por este camino porque el wget de ESXi no está compilado con SSL y quería descargar un OVA del sitio web de un proveedor directamente en el host de ESXi que está al otro lado del mundo.
Tuve que desactivar el firewall (perezoso) / activar https editando las reglas (correcto)
creó el script de python:
Las bibliotecas ESXi están un poco emparejadas, pero el instalador de comadrejas de código abierto parecía usar urllib para https ... así que me inspiró a seguir este camino
fuente
Otra forma limpia de guardar el archivo es esta:
fuente
urllib.urlretrieve
ourllib.URLopener().retrieve
no está claro a qué te referías aquí.