2013-06-09 48 views
55

Tôi đang sử dụng thư viện tuyệt vời Python Requests. Tôi nhận thấy rằng fine documentation có nhiều ví dụ về cách để làm điều gì đó mà không cần giải thích lý do tại sao. Ví dụ: cả hai số r.textr.content được hiển thị dưới dạng ví dụ về cách để nhận phản hồi của máy chủ. Nhưng nó được giải thích ở đâu? Ví dụ, khi nào tôi chọn cái kia? Tôi thấy thar r.text trả lại đối tượng unicode đôi khi và tôi cho rằng sẽ có sự khác biệt đối với phản hồi không phải văn bản. Nhưng tất cả những tài liệu này ở đâu? Lưu ý rằng các tài liệu liên quan nào nhà nước:Sự khác biệt giữa 'nội dung' và 'văn bản'

Bạn cũng có thể truy cập vào cơ thể phản ứng như byte, cho các yêu cầu phi văn bản:

Nhưng sau đó nó đi vào để hiển thị một ví dụ về một phản ứng văn bản! Tôi chỉ có thể giả sử rằng báo giá ở trên có nghĩa là nói non-text responses thay vì non-text requests, vì yêu cầu không phải văn bản không có ý nghĩa trong HTTP.

Tóm lại, đâu là tài liệu thích hợp của thư viện, thay vì hướng dẫn xuất sắc trên trang web Yêu cầu Python?

+1

Liên quan: [Tôi có nên sử dụng .text hoặc .content khi phân tích cú pháp câu trả lời Yêu cầu không?] (Https://stackoverflow.com/q/40163323/3357935) –

Trả lời

71

Các developer interface có thêm chi tiết:

r.text là nội dung của phản hồi trong unicode và r.content là nội dung của phản hồi theo byte.

+24

Và khi nào bạn chọn cái này hay cái kia? – multigoodverse

+0

@multigoodverse: Có lẽ 'r.text' sẽ được ưu tiên cho các phản hồi văn bản, chẳng hạn như tài liệu HTML hoặc XML và' r.content' sẽ được ưu tiên cho các loại tệp "nhị phân", chẳng hạn như tệp hình ảnh hoặc PDF. – dotancohen

+0

@dotancohen HTML và khai báo sử dụng XML trong dữ liệu để thực hiện giải mã riêng của chúng và vì vậy chúng phải được nạp nguyên 'r.content', không phải là' r.text' được ẩn. – tdelaney

7

Có vẻ như rõ ràng từ các tài liệu hướng dẫn là r.content

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

>>> r.content 

Nếu bạn đọc tiếp tục xuống trang nó đề cập đến ví dụ một tập tin hình ảnh

+2

Cảm ơn bạn. Bây giờ tôi thấy 'b' nhỏ trước ví dụ đầu tiên với văn bản" cho các yêu cầu không phải văn bản ", có nghĩa là đối tượng là một đối tượng byte. Nó không phải là rõ ràng tại sao các byte được hiển thị như văn bản, có lẽ đó là một độc đáo Python ', nhưng nó là khó hiểu trong bối cảnh này. Cảm ơn. – dotancohen

Các vấn đề liên quan