मेरा लक्ष्य अनुरोध का उपयोग करके फ़ाइल के हिस्से का एक पुट करना है और फ़ाइल को स्ट्रीम करना है (यानी, इसे स्मृति में लोड न करें और फिर PUT करें)।अनुरोध - अपलोड कैसे करें - आंशिक फ़ाइल
This page बताते हैं आपको लगता है कि कैसे करेंगे एक पूरी फ़ाइल के लिए:
अनुरोध स्ट्रीमिंग अपलोड है, जो आप उन्हें स्मृति में पढ़ने के बिना बड़े धाराओं या फ़ाइलें भेजने के लिए अनुमति देने के समर्थन करता है। स्ट्रीम और अपलोड करने के लिए बस अपने शरीर के लिए एक फ़ाइल जैसी वस्तु प्रदान करते हैं:
with open('massive-body', 'rb') as f:
requests.post('http://some.url/streamed', data=f)
हालांकि मेरे मामले में मैं केवल फ़ाइल में से एक हिस्सा भेजना चाहते हैं। क्या इसको मदद देने का कोई तरीका है?
अवधारणा में, कुछ की तरह:
with open('massive-body', 'rb') as f:
requests.post('http://some.url/streamed', data=f.read(chunksize))
हम्म, आप संभवतः एक फ़ाइल-जैसी ऑब्जेक्ट होने का नाटक करने वाले जनरेटर लिख सकते हैं जो दृश्यों के पीछे एक हिस्सा पढ़ेगा, हालांकि मुश्किल हो सकता है क्योंकि मुझे यकीन नहीं है कि फाइल पर कॉल करने के अनुरोध क्या हैं, लेकिन संभव है अगर कोई भी बेहतर समाधान – user3012759
@ user3012759 के साथ आता है: मैंने किसी फ़ाइल की तरह ऑब्जेक्ट में अनुरोध की आवश्यकता नहीं है, इसका कोई फायदा नहीं हुआ। हालांकि, ध्यान दें कि यह [चंक-एन्कोडेड अनुरोध] के लिए एक साधारण जनरेटर स्वीकार करता है (http://docs.python-requests.org/en/latest/user/advanced/#chunk-encoded-requests) –
मुझे लगता है कि आप प्रयोग कर सकते हैं एक मूल फ़ाइल-जैसी कक्षा का उपयोग करके जिसमें 'read' और' close' विधियां हैं, और यदि यह काम नहीं करता है, तब तक आपकी कक्षा में विधियों को जोड़ना जारी रखें जब तक अनुरोध शिकायत बंद न हो जाए। :) –