Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membetulkan Isu Muat Turun Imej Menggunakan Modul Permintaan Python?

Bagaimana untuk Membetulkan Isu Muat Turun Imej Menggunakan Modul Permintaan Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 08:24:11166semak imbas

How to Fix Image Download Issues Using Python's Requests Module?

Menyelesaikan Masalah Muat Turun Imej dengan Modul Permintaan

Soalan:

Semasa cuba memuat turun imej menggunakan modul Permintaan dalam Python, kod di bawah gagal:

r = requests.get(settings.STATICMAP_URL.format(**data))
if r.status_code == 200:
    img = r.raw.read()
    with open(path, 'w') as f:
        f.write(img)

Bolehkah anda membantu mengenal pasti isu dan mencadangkan penyelesaian?

Jawapan:

Untuk memuat turun imej menggunakan modul Permintaan , anda boleh menggunakan sama ada objek fail response.raw atau lelaran atas respons. Berikut ialah pendekatan:

Menggunakan response.raw:

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)

Pendekatan ini memaksa penyahmampatan respons termampat dan menggunakan shutil.copyfileobj() untuk menstrim data ke objek fail.

Lelaran Berakhir Respons:

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)

Pendekatan ini memastikan data dinyahmampat dan membaca data dalam ketulan 128 bait. Anda boleh menyesuaikan saiz ketulan menggunakan kaedah Response.iter_content().

Nota Tambahan:

  • Buka fail destinasi dalam mod binari ('wb' ) untuk menghalang terjemahan baris baharu.
  • Tetapkan strim=Benar untuk mengelakkan memuatkan keseluruhan imej ke dalam ingatan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Isu Muat Turun Imej Menggunakan Modul Permintaan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn