'सामग्री' और 'पाठ' में क्या अंतर है


122

मैं भयानक पायथन अनुरोध पुस्तकालय का उपयोग कर रहा हूं । मुझे लगता है कि ठीक प्रलेखन के कई उदाहरण हैं कि क्यों कुछ समझाए बिना कुछ किया जाए । उदाहरण के लिए, दोनों को r.textऔर r.contentउदाहरण के रूप में दिखाया जाता है कि सर्वर की प्रतिक्रिया कैसे प्राप्त करें। लेकिन यह कहाँ समझाया गया है कि ये गुण क्या करते हैं? उदाहरण के लिए, मैं कब एक का चयन करूंगा? मुझे लगता है कि थार कभी-कभीr.text एक यूनिकोड ऑब्जेक्ट देता है , और मुझे लगता है कि गैर-पाठ प्रतिक्रिया के लिए अंतर होगा। लेकिन यह सब कहां प्रलेखित है? ध्यान दें कि लिंक किया गया दस्तावेज़ राज्य करता है:

आप गैर-पाठ अनुरोधों के लिए प्रतिक्रिया बॉडी को बाइट्स के रूप में एक्सेस कर सकते हैं:

लेकिन फिर यह एक पाठ प्रतिक्रिया का एक उदाहरण दिखाने के लिए आगे बढ़ता है! मैं केवल यह मान सकता हूं कि उपरोक्त उद्धरण का अर्थ non-text responsesइसके बजाय कहना है non-text requests, क्योंकि गैर-पाठ अनुरोध HTTP में कोई मतलब नहीं रखता है।

संक्षेप में, पायथन अनुरोध साइट पर (उत्कृष्ट) ट्यूटोरियल के विपरीत, पुस्तकालय का उचित दस्तावेज कहां है ?


जवाबों:


144

डेवलपर इंटरफेस अधिक जानकारी के होते हैं:

r.textयूनिकोड में प्रतिक्रिया r.contentकी सामग्री है , और बाइट्स में प्रतिक्रिया की सामग्री है।


46
और आप एक या दूसरे को कब चुनेंगे?
मल्टीगुडवर्स

13
@multigoodverse: संभवतः r.textएक HTML या XML दस्तावेज़ जैसे पाठकीय प्रतिक्रियाओं के लिए पसंद किया r.contentजाएगा , और इसे "बाइनरी" फ़ाइलपेट के लिए पसंद किया जाएगा, जैसे कि एक छवि या पीडीएफ फाइल।
डॉटनचेन

5
@dotancohen HTML और XML डेटा को स्वयं डिकोड करने के लिए घोषणाओं का उपयोग करते हैं और इसलिए उन्हें कवर्ड r.contentनहीं बल्कि कच्चा ही खिलाया जाना चाहिए r.text
tdelaney

आमतौर पर, एक एकल प्रतिक्रिया में नेस्टेड या मल्टीपार्ट सामग्री (जैसे संलग्नक के साथ ईमेल संदेश), और प्रत्येक भाग को अलग-अलग तरीकों से एन्कोड किया जा सकता है। बाइट स्ट्रीम तक पहुंच के बिना ऐसी प्रतिक्रियाओं को संभालना असंभव है, लेकिन यह सामान्य मामले से एक लंबा रास्ता है, जहां आप सही ढंग से यूनिकोड पाठ को डिकोड करना चाहते हैं।
होल्डनवेब

क्यों अजगर व्याख्याकार दोनों r.textऔर r.contentग्रंथों के रूप में दिखाता है । r.contentपाठ के रूप में और r.textबिट्स के रूप में क्यों नहीं दिखाया गया है (यदि यह स्वाभाविक है कि क्या है)?
अर्नब

11

यह दस्तावेज से स्पष्ट है कि r.content है

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

 >>> r.content

यदि आप पृष्ठ को और नीचे पढ़ते हैं तो यह उदाहरण के लिए एक छवि फ़ाइल को संबोधित करता है


2
धन्यवाद। अब मैं b"गैर-पाठ अनुरोधों के लिए" पाठ के साथ पहला उदाहरण देख रहा हूं , जिसका अर्थ है कि ऑब्जेक्ट बाइट्स ऑब्जेक्ट है। यह स्पष्ट नहीं है कि बाइट्स को पाठ के रूप में क्यों प्रदर्शित किया जा रहा है, शायद यह एक और पायथन 'निकिता' है, लेकिन यह इस संदर्भ में भ्रमित है। धन्यवाद।
डॉटनचेन

1
यह अजगर 3.x की तुलना में अजगर 3.x के साथ अधिक मायने रखता है; पेज requests3 में python 3 का उपयोग करके । इस त्रुटि को देता है: if 'rss' in page.content:->TypeError: a bytes-like object is required, not 'str'
मार्क मैक्समिस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.