Apabila cuba memuat turun imej daripada internet menggunakan modul permintaan Python, anda mungkin menghadapi masalah dengan kod berbanding menggunakan urlopen urllib2 kaedah. Artikel ini menangani cabaran ini dan menyediakan penyelesaian.
img = urllib2.urlopen(settings.STATICMAP_URL.format(**data)) with open(path, 'w') as f: f.write(img.read())
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)
Isu timbul apabila menggunakan permintaan kerana atribut daripada respons yang mengandungi data imej adalah berbeza daripada urlopen in urllib2.
Untuk mendapatkan semula data imej daripada respons permintaan, terdapat dua pilihan:
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)
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)
Dengan menetapkan strim=True dalam panggilan permintaan, ia menghalang muat turun keseluruhan imej ke dalam memori sekaligus. Fail hendaklah dibuka dalam mod binari untuk mengelakkan ralat.
Atas ialah kandungan terperinci Bagaimana untuk memuat turun imej dengan betul menggunakan modul `permintaan` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!