2015-11-24 7 views
11

अतीत में, codecs है जिसे io द्वारा प्रतिस्थापित किया गया है। हालांकि ऐसा लगता है कि io.open का उपयोग करने के लिए यह अधिक सलाह दी जाती है, लेकिन अधिकांश प्रारंभिक पायथन कक्षाएं अभी भी open सिखाती हैं।पायथन में io.open बनाम ओपन के बीच अंतर

Difference between open and codecs.open in Python के साथ एक सवाल ही नहीं है, लेकिन openio.open का एक मात्र बतख प्रकार है?

यदि नहीं, तो क्यों यह io.open उपयोग करने के लिए बेहतर है? और open के साथ सिखाना आसान क्यों है?

इस पोस्ट (http://code.activestate.com/lists/python-list/681909/) में, स्टीवन DAprano का कहना है कि open में बनाया बैकएंड में io.open उपयोग कर रहा है। तो क्या हम सभी को io.open के बजाय open का उपयोग करने के लिए हमारे कोड का पुन: उपयोग करना चाहिए?

py2.x के लिए पश्चगामी संगतता के अलावा, py3.0 में io.open बजाय open उपयोग करने के लिए किसी भी कारण रहे हैं? डॉक्स के अनुसार python3 में

+1

चेक बाहर 'मदद से काम कर रहा है कि कोडेक का एक व्यापक रेंज के उपयोग की अनुमति प्रदान करता है (खुला) 'और आप देखेंगे कि यह 'io.open()' जैसा ही है - यहां तक ​​कि शीर्षक कहता है' मॉड्यूल io' में अंतर्निहित फ़ंक्शन पर सहायता, इसलिए दूसरे शब्दों में, 'io का उपयोग करने का कोई कारण नहीं है। ओपन() 'यदि आप पायथन 3 में एक प्रोग्राम लिख रहे हैं। –

+0

@ टिमपेट्ज़कर,' io.open' केवल पीछे की संगतता के लिए है? यदि ऐसा है, तो मुझे 'python3' =) – alvas

+0

हां, शायद सभी वर्ग सामग्री को बदलना शुरू करना चाहिए। यह 2.x से 3.x तक आसान बनाता है, लेकिन यदि आप 3.x से शुरू कर रहे हैं, तो इसे और अधिक जटिल बनाने की आवश्यकता नहीं है। –

उत्तर

16

स्थिति:

io.open(file, *[options]*)

यह builtin खुला() फ़ंक्शन के लिए एक उपनाम है।

और

builtin खुला() और संबद्ध कब मॉड्यूल एन्कोडेड पाठ फ़ाइलों के साथ काम करने के लिए सिफारिश कर रहे हैं जबकि दृष्टिकोण, इस मॉड्यूल [यानी कोडेक] अतिरिक्त उपयोगिता कार्यों और वर्गों जब द्विआधारी फ़ाइलों

(बोल्ड और इटैलिक मेरे संपादन कर रहे हैं)

संबंधित मुद्दे