Memuat turun Imej Menggunakan Modul Permintaan dalam Python
Dalam usaha memuat turun dan menyimpan imej daripada web menggunakan modul permintaan, seorang pembangun menghadapi kesukaran. Kod yang diberikan pada mulanya berfungsi, tetapi kod yang diubah suai menggunakan permintaan mengakibatkan ralat.
Ralat timbul kerana penggunaan atribut yang salah daripada respons permintaan. Untuk berjaya mendapatkan semula imej menggunakan permintaan, terdapat dua pilihan:
Menggunakan respons.raw File Object
Menggunakan atribut response.raw mengembalikan data mentah bagi tindak balas. Menyahkod respons termampat (cth., menggunakan GZIP atau mengempis) tidak dikendalikan secara automatik. Untuk memaksa penyahmampatan, tetapkan atribut decode_content kepada True. Selepas itu, gunakan shutil.copyfileobj() untuk menstrim data ke objek fail.
import requests import shutil r = requests.get(settings.STATICMAP_URL.format(**data), stream=True) if r.status_code == 200: with open(path, 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f)
Lelaran Atas Respons
Pendekatan alternatif melibatkan lelaran ke atas respons , yang memastikan penyahmampatan data.
r = requests.get(settings.STATICMAP_URL.format(**data), stream=True) if r.status_code == 200: with open(path, 'wb') as f: for chunk in r: f.write(chunk)
Menyesuaikan saiz bongkah boleh dilakukan menggunakan Kaedah Response.iter_content().
r = requests.get(settings.STATICMAP_URL.format(**data), stream=True) if r.status_code == 200: with open(path, 'wb') as f: for chunk in r.iter_content(1024): f.write(chunk)
Ingat untuk membuka fail destinasi dalam mod binari untuk menghalang terjemahan baris baharu dan tetapkan strim=True untuk mengelakkan muat turun penuh intensif memori.
Atas ialah kandungan terperinci Bagaimana untuk memuat turun imej dengan cekap dengan modul permintaan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!