मुझे लगता है कि द्विआधारी डेटा में ऐसी चीजें नहीं हैं जैसे अंत-रेखाएं।
बाइनरी फ़ाइलों में चरित्र \ n सहित उनमें से कोई भी संभावित चरित्र हो सकता है। आप नहीं चाहते कि अजगर किसी बाइनरी फ़ाइल में किसी और अक्षर को किसी अन्य रूप में परिवर्तित कर दे। पाइथन को पता नहीं है कि यह एक बाइनरी फ़ाइल पढ़ रहा है जबतक कि आप इसे नहीं बताते। और जब पाइथन एक टेक्स्ट फ़ाइल पढ़ता है तो यह स्वचालित रूप से किसी भी \ n चरित्र को ओएस के न्यूलाइन कैरेक्टर में परिवर्तित करता है, जो विंडोज़ पर \ r \ n है।
वैसे ही चीजें सभी कंप्यूटर प्रोग्रामिंग भाषाओं में काम करती हैं।
इसके बारे में सोचने का एक और तरीका यह है: फ़ाइल केवल बाइट्स (8 बिट्स) की एक लंबी श्रृंखला है। एक बाइट सिर्फ एक पूर्णांक है। और एक बाइट कोई पूर्णांक हो सकता है। यदि एक बाइट पूर्णांक 10 होता है, तो यह चरित्र \ n के लिए ascii कोड भी है। यदि फ़ाइल में बाइट बाइनरी डेटा का प्रतिनिधित्व करते हैं, तो आप नहीं चाहते हैं कि पाइथन 10 में पढ़े और इसे दो बाइट्स में परिवर्तित करें: 13 और 10. आमतौर पर जब आप बाइनरी डेटा पढ़ते हैं, तो आप पहले 2 बाइट्स को पढ़ना चाहते हैं, एक संख्या का प्रतिनिधित्व करता है, फिर अगले 4 बाइट्स जो एक और संख्या का प्रतिनिधित्व करते हैं, आदि .. जाहिर है, अगर पाइथन अचानक बाइट्स में से एक को दो बाइट्स में परिवर्तित कर देता है, तो इससे दो समस्याएं पैदा हो जाएंगी: 1) यह डेटा बदलती है, 2) आपके सभी डेटा सीमाएं गड़बड़ हो जाएगा।
एक उदाहरण: मान लीजिए कि फ़ाइल के पहले बाइट को कुत्ते के वजन का प्रतिनिधित्व करना चाहिए, और बाइट का मान 10 है। फिर अगला बाइट कुत्ते की उम्र का प्रतिनिधित्व करना चाहिए, और इसका मान 1 है। यदि पायथन बदल जाता है 10 है, जो \ n के लिए ascii कोड है दो बाइट के लिए,: 10 और 13 है, तो डेटा अजगर हाथ आप तरह दिखेगा:
और आप के लिए दूसरी बाइट निकालने जब कुत्ते की उम्र, आपको 13 मिलते हैं -
हम अक्सर कहते हैं कि एक फ़ाइल में 'अक्षर' होते हैं लेकिन यह पेटेंट झूठा है। कंप्यूटर अक्षर स्टोर नहीं कर सकते हैं; वे केवल संख्याओं को स्टोर कर सकते हैं। तो एक फाइल सिर्फ संख्याओं की एक लंबी श्रृंखला है। यदि आप उन संख्याओं को एसिसी कोड के रूप में इलाज करने के लिए पाइथन बताते हैं, जो वर्णों का प्रतिनिधित्व करते हैं, तो पायथन आपको टेक्स्ट देगा।
यह "बाइनरी मोड का उपयोग करने के लिए ** बहुत सावधान रहें ...", "सावधान रहें ** जब आप ** बाइनरी मोड का उपयोग करते हैं ..."। बाइनरी मोड सुरक्षित है। – Matthias