कोड:
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 में हटा दिया गया है। (धन्यवाद स्कॉट) अधिक जानकारी के लिए यह प्रश्न देखें ।