कोड:
file('pinax/media/a.jpg', 'wb')
openइसके बजाय का उपयोग करें file, जो अजगर 2 में हटा दिया गया था और अजगर 3 में हटा दिया गया था। देखें। stackoverflow.com/questions/112970/…
कोड:
file('pinax/media/a.jpg', 'wb')
openइसके बजाय का उपयोग करें file, जो अजगर 2 में हटा दिया गया था और अजगर 3 में हटा दिया गया था। देखें। stackoverflow.com/questions/112970/…
जवाबों:
फाइल मोड , राइट और बाइनरी। जब से आप .jpg फ़ाइल लिख रहे हैं, यह ठीक लग रहा है।
लेकिन अगर आप उस jpg फाइल को पढ़ना चाहते हैं, जिसका आपको उपयोग करना है 'rb'
और जानकारी
विंडोज पर, मोड में संलग्न 'बी' फ़ाइल को बाइनरी मोड में खोलता है, इसलिए 'आरबी', 'डब्ल्यूबी' और 'आर + बी' जैसे मोड भी हैं। विंडोज पर पायथन पाठ और बाइनरी फ़ाइलों के बीच अंतर करता है; जब डेटा पढ़ा या लिखा जाता है तो टेक्स्ट फ़ाइलों में अंत-पंक्ति वर्ण स्वचालित रूप से थोड़े बदल जाते हैं। डेटा को फ़ाइल करने के लिए पर्दे के पीछे का यह संशोधन ASCII टेक्स्ट फ़ाइलों के लिए ठीक है, लेकिन यह JPEG या EXE फ़ाइलों की तरह ही द्विआधारी डेटा को भ्रष्ट कर देगा।
fd.write("foo\n")वास्तव में , डिस्क पर लिखता है foo\r\n(नोट करें \r)।
wbइंगित करता है कि फ़ाइल द्विआधारी मोड में लिखने के लिए खोला जाता है।
बाइनरी मोड में लिखते समय, पायथन डेटा में कोई बदलाव नहीं करता है क्योंकि यह फ़ाइल में लिखा है। पाठ मोड में (जब आप के bरूप में wया जब आप पाठ मोड निर्दिष्ट करते हैं, तो इसे बाहर रखा जाता है wt), हालांकि, पायथन डिफ़ॉल्ट पाठ एन्कोडिंग के आधार पर पाठ को एन्कोड करेगा। इसके अतिरिक्त, पाइथन लाइन-एंडिंग ( \n) को जो भी प्लेटफ़ॉर्म-विशिष्ट लाइन एंडिंग है, कन्वर्ट करेगा , जो एक बाइनरी फ़ाइल exeया pngफ़ाइल की तरह भ्रष्ट होगा ।
पाठ मोड का उपयोग तब किया जाना चाहिए जब पाठ फ़ाइलें (चाहे सादे पाठ या CSV जैसे पाठ-आधारित प्रारूप का उपयोग कर रहे हों), जबकि बाइनरी मोड का उपयोग छवियों की तरह गैर-पाठ फ़ाइलों को लिखते समय किया जाना चाहिए।
संदर्भ:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wbविकल्प के साथ खोला गया था । wइसके बजाय विकल्प का उपयोग करके , मैं इसे ठीक से काम करने में सक्षम था।
bमोड का केवल विंडोज पर प्रभाव था। वह अब दस्तावेज़ीकरण से हटा दिया गया है और बाइनरी मोड "उन सभी फ़ाइलों के लिए उपयोग किया जाना चाहिए जिसमें पाठ शामिल नहीं है"।
यह वह मोड है जिसके साथ आप फ़ाइल खोल रहे हैं। "wb" का अर्थ है कि आप फ़ाइल (w) को लिख रहे हैं, और यह कि आप बाइनरी मोड (b) में लिख रहे हैं।
अधिक के लिए दस्तावेज़ की जाँच करें: clicky
openबजाय का उपयोग करने पर विचार करना चाहिएfile।fileअजगर 2 में पदावनत किया गया (कौन सा संस्करण नहीं मिला) और py3k में हटा दिया गया है। (धन्यवाद स्कॉट) अधिक जानकारी के लिए यह प्रश्न देखें ।