2013-06-09 65 views
55

私は素晴らしいPython Requestsライブラリを使用しています。 fine documentationにはの多くの例があります。を説明せずに何かを行う方法はです。例えば、r.textr.contentの両方が、の例として示され、サーバー応答を取得する方法は、です。 しかし、これらのプロパティは何を説明していますか?たとえば、いつ他のものを選ぶでしょうか?私はtharを参照してくださいr.textユニコードオブジェクトを返します時々、と私は、テキスト以外の応答の違いがあると思います。しかし、これはどこに文書化されていますか?'content'と 'text'の違い

あなたはまた、非テキストの要求に対して、バイトとしてレスポンスボディにアクセスすることができます:

をしかし、それは、テキスト応答の一例を示すことになります状態リンクされたドキュメントがないことに注意してください!上記の見積もりは、non-text requestsの代わりにnon-text responsesと言うことを意味します。非テキストリクエストはHTTPでは意味をなさないためです。要するに

、(優れた)とは対照的に、ライブラリーの適切なドキュメントはPythonの要求サイト上チュートリアルは、ありますか?

+1

関連:[リクエストレスポンスの解析時に.textまたは.contentを使用する必要がありますか?](https://stackoverflow.com/q/40163323/3357935) –

答えて

71

developer interface詳細を持っています

r.textはユニコードでの応答の内容であり、r.contentはレスポンスの内容(バイト単位)です。

+24

いつどちらか一方を選ぶでしょうか? – multigoodverse

+0

@multigoodverse:おそらく 'r.text'はHTMLやXML文書のようなテキストレスポンスに適しており、' r.content'は画像やPDFファイルのような "バイナリ"ファイルタイプに好まれるでしょう。 – dotancohen

+0

@dotancohen HTMLとXMLは、独自のデコードを行うためにデータ内で宣言を使用しているため、隠された 'r.text'ではなく、生の' r.content'が与えられます。 – tdelaney

7

それは文書から明らかなようだが、そのr.content

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

>>> r.content 

で、ページのさらに下読めば、それは、例えば、画像ファイルを扱う

+2

ありがとうございます。最初の例に先行する小さな「b」が「非テキスト要求のための」テキストで表示されます。つまり、オブジェクトはバイトオブジェクトです。なぜバイトがテキストとして表示されているのかは不明ですが、これは別のPythonの「きれいな」ものですが、この文脈では混乱しています。ありがとう。 – dotancohen

関連する問題