Eu sou novo no Python e tenho feito perguntas e respostas neste site, para obter uma resposta para minha pergunta. No entanto, sou iniciante e acho difícil entender algumas das soluções. Eu preciso de uma solução muito básica.
Alguém poderia, por favor, explicar uma solução simples para 'Baixar um arquivo através de http' e 'Salvá-lo em disco no Windows' para mim?
Também não sei como usar os módulos shutil e os.
O arquivo que eu quero baixar tem menos de 500 MB e é um arquivo .gz. Se alguém puder explicar como extrair o arquivo e utilizar os arquivos nele, isso seria ótimo!
Aqui está uma solução parcial, que escrevi de várias respostas 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
Alguém poderia apontar erros (nível iniciante) e explicar métodos mais fáceis de fazer isso?
Obrigado!
testfile.retrieve("http://example.com/example.rpm", "/tmp/test.rpm")
.Como mencionado aqui :
EDIT:
Se você ainda deseja usar solicitações, consulte esta pergunta ou esta .fonte
requests
é extremamente útil em comparação com ourllib
trabalho com uma API REST. A menos que você esteja procurando fazer muito mais, isso deve ser bom.import urllib.request
urllib.request.urlretrieve(url, filename)
Eu uso o wget .
Biblioteca simples e boa, se você quiser dar um exemplo?
O módulo wget suporta as versões python 2 e python 3
fonte
Quatro métodos usando wget, urllib e request.
testRequest - 4469882 chamadas de função (4469842 chamadas primitivas) em 20,236 segundos
testRequest2 - 8580 chamadas de função (8574 chamadas primitivas) em 0,072 segundos
testUrllib - 3810 chamadas de função (3775 chamadas primitivas) em 0,036 segundos
testwget - 3489 chamadas de função em 0,020 segundos
fonte
Para Python3 +
URLopener
está obsoleto. E quando usado, você receberá um erro como abaixo:Então tente:
fonte
Solução exótica para Windows
fonte
Comecei nesse caminho porque o wget do ESXi não é compilado com SSL e eu queria baixar um OVA do site de um fornecedor diretamente no host ESXi, que fica do outro lado do mundo.
Eu tive que desativar o firewall (lento) / ativar https fora editando as regras (apropriado)
criou o script python:
As bibliotecas ESXi estão meio emparelhadas, mas o instalador de doninhas de código aberto parecia usar urllib para https ... então isso me inspirou a seguir esse caminho
fonte
Outra maneira limpa de salvar o arquivo é:
fonte
urllib.urlretrieve
ouurllib.URLopener().retrieve
, pouco claro, o que você quis dizer aqui.