2013-06-09 13 views
55

arasındaki fark nedir? Müthiş Python Requests kütüphanesini kullanıyorum. fine documentation'un birçok örneğinin'un neden niçin açıklamasını yapmadan yapabildiğini fark ettim. Örneğin, r.text ve r.content her ikisi de örneğinin sunucu yanıtını almak için nasıl örneğidir. Ama bu özelliklerin neler yaptığını nerede açıklıyor? Örneğin, diğerinden ne zaman birini seçerim? Ben r.text unchile nesnesini bazen döndürdüğünü görüyorum ve metin dışı bir yanıt için bir fark olacağını varsayalım. Ama bütün bunlar nerede belgelendi?'content' ve 'text'

Ayrıca metin dışı istekleri için bayt olarak tepki gövdesini erişebilir:

Ama sonra bir metin yanıtının bir örneğini göstermek için gider devlet bağlantılı belge unutmayın! Sadece yukarıdaki alıntı, non-text requests yerine non-text responses demek anlamına gelir, çünkü metin dışı bir istek HTTP'de anlam ifade etmez. Python İstekler sitesinde (mükemmel) öğretici aksine Kısacası

, nerede uygun dokümantasyon kütüphane, nedir?

: sayfanın altındaki okursanız

+1

İlgili: [İstekler yanıtı ayrıştırılırken .text veya .content kullanmalı mıyım?] (Https://stackoverflow.com/q/40163323/3357935) –

cevap

71

developer interface daha fazla bilgi içeren bir resim dosyası hitap ettiğini r.content

You can also access the response body as bytes, for non-text requests: 

>>> r.content 

olduğunu r.text, unicode'daki yanıt içeriğidir ve r.content, bayt cinsinden yanıt içeriğidir.

+24

Ne zaman birini veya diğerini seçersiniz? – multigoodverse

+0

@multigoodverse: Bir HTML veya XML belgesi gibi metinsel yanıtlarda muhtemelen “r.text” tercih edilir ve görüntü veya PDF dosyası gibi “ikili” dosya türleri için “r.content” tercih edilir. – dotancohen

+0

@dotancohen HTML ve XML, kendi kod çözümlerini yapmak için verilerdeki beyannameleri kullanırlar ve bu nedenle de "r.content" ile değil, gizli "r.text" ile beslenmeleri gerekir. – tdelaney

7

Bu belgelerinden açık görünüyor örneğin

+2

Teşekkür ederiz. Şimdi, ilk örnekten önceki “b” harfini, “metin olmayan istekler için” metniyle görüyorum. Bu, nesnenin bir bytes nesnesi olduğu anlamına gelir. Baytların metin olarak gösterilmesinin nedeni açık değildir, belki de başka bir Python 'güzelliği', ama bu bağlamda kafa karıştırıcıdır. Teşekkürler. – dotancohen