Saya baru mengenal Python dan saya telah melalui T&J di situs ini, untuk jawaban atas pertanyaan saya. Namun, saya seorang pemula dan saya merasa sulit untuk memahami beberapa solusi. Saya butuh solusi yang sangat mendasar.
Bisakah seseorang tolong jelaskan solusi sederhana untuk 'Mengunduh file melalui http' dan 'Menyimpannya ke disk, di Windows', kepada saya?
Saya juga tidak yakin bagaimana menggunakan modul shutil dan os.
File yang ingin saya unduh adalah di bawah 500 MB dan merupakan file arsip .gz. Jika seseorang dapat menjelaskan cara mengekstrak arsip dan menggunakan file di dalamnya, itu akan menjadi luar biasa!
Inilah solusi parsial, yang saya tulis dari berbagai jawaban yang digabungkan:
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
Bisakah seseorang menunjukkan kesalahan (tingkat pemula) dan menjelaskan metode yang lebih mudah untuk melakukan ini?
Terima kasih!
testfile.retrieve("http://example.com/example.rpm", "/tmp/test.rpm")
.Seperti yang disebutkan di sini :
EDIT:
Jika Anda masih ingin menggunakan permintaan, lihat pertanyaan ini atau yang ini .sumber
requests
sangat membantu dibandingkanurllib
saat bekerja dengan REST API. Kecuali, Anda ingin melakukan lebih banyak, ini seharusnya bagus.import urllib.request
urllib.request.urlretrieve(url, filename)
Saya menggunakan wget .
Perpustakaan sederhana dan bagus jika Anda ingin contoh?
modul wget mendukung versi python 2 dan python 3
sumber
Empat metode menggunakan wget, urllib, dan request.
testRequest - panggilan fungsi 4469882 (4469842 panggilan primitif) dalam 20,236 detik
testRequest2 - 8580 panggilan fungsi (8574 panggilan primitif) dalam 0,072 detik
testUrllib - 3810 panggilan fungsi (3775 panggilan primitif) dalam 0,036 detik
testwget - 3489 panggilan fungsi dalam 0,020 detik
sumber
Untuk Python3 +
URLopener
sudah usang. Dan ketika digunakan Anda akan mendapatkan kesalahan seperti di bawah ini:Jadi, coba:
sumber
Solusi Windows Eksotis
sumber
Saya memulai jalur ini karena wget ESXi tidak dikompilasi dengan SSL dan saya ingin mengunduh OVA dari situs web vendor langsung ke host ESXi yang ada di sisi lain dunia.
Saya harus menonaktifkan firewall (malas) / mengaktifkan https dengan mengedit aturan (semestinya)
membuat skrip python:
Pustaka ESXi agak dipasangkan tetapi installer musang sumber terbuka tampaknya menggunakan urllib untuk https ... jadi itu mengilhami saya untuk mengikuti jalan ini
sumber
Cara bersih lain untuk menyimpan file adalah ini:
sumber
urllib.urlretrieve
atauurllib.URLopener().retrieve
tidak jelas yang Anda maksud di sini.