Text and Binary Files Management – पिछले Section में हमने जो भी File Example Create किया है, वो Text File पर ही आधारित था, जहां Open की जाने वाली File का Opening Mode दूसरे Parameter के आधार पर तय होता है। Python, Text व Binary सभी तरह के File Types को Support करता है, लेकिन Python 3.0 से इन दोनों तरह की Files को थोड़ा अलग तरीके से Handle किया जाने लगा है। जहां –
Text File, File के Content को एक Normal str String की तरह Represent करता है, Automatically Unicode Encoding व Decoding Perform करता है तथा By Default, End-of-Line Translation Perform कर देता है।
जबकि Binary File, File के Content को एक Special bytes String Type की तरह Represent करता है और File के Content को Unaltered तरीके से Access करने की सुविधा देता है। यानी ये किसी तरह का Automatic Encoding/Decoding नहीं करता, न ही End-of-Line Translation करता है।
यानी Python 3.0 से ASCII Text व अन्य 8-Bit Encoding सहित सभी तरह के Text को Unicode String की तरह ही Treat किया जाता है और क्योंकि ज्यादातर Programmers, ASCII Text के साथ ही Deal करते हैं, इसलिए सभी तरह के Basic Text File Interfaces को वे Exactly समान प्रकार से ही Use कर सकते हैं, जिस तरह से Binary Files के साथ करते हैं। अन्य शब्दों में कहें तो Python 3.0 से Text Files व Strings दोनों को एक समान तरीके से ही Handle किया जाता है।
यदि हमें हमारे Python Application में Internationalized Character Set को Use करना हो या फिर Byte-Oriented Data को Use करना हो, तो उस स्थिति में हमें Binary Files के लिए bytes String को Use करना होता है और Text File के लिए Normal str String को Use करना होता है।
चूंकि Python 3.0 में Text Files को भी Unicode Encodings के रूप में ही Implement किया जाता है, इसलिए हमें किसी Binary File को Text Mode में Open नहीं करना चाहिए। क्योंकि यदि हम ऐसा करेंगे, तो Python द्वारा उस File के Content को Unicode Text के रूप में Decode करने की Automatically Perform होने वाली प्रक्रिया Fail हो जाएगी।
[code] FileName: BinaryFile.py print("Create File data.bin in Writing Mode") fpNames = open("data.bin","wb") binContent = bytes("KRISHNA \t MURARI \n", encoding="utf-8") intChars = fpNames.write(binContent) print("Number of Characters written in Buffer:", intChars) binContent = bytes("MADHAV \t BIHARI \n", encoding="utf-8") intChars = fpNames.write(binContent) print("Number of Characters written in Buffer:", intChars, "\n") fpNames.close() print("Open File data.bin in Reading Mode") fpNames = open("data.bin","rb") print(fpNames.read()) fpNames.close() Output Create File data.bin in Writing Mode Number of Characters written in Buffer: 18 Number of Characters written in Buffer: 17 Open File data.bin in Reading Mode b'KRISHNA \t MURARI \nMADHAV \t BIHARI \n' [/code]
इस Example में हमने ठीक उसी तरह से एक Binary File को Open किया है, जिस तरह से पिछले Example में एक Text File को Open किया था और हमने Exactly Same Text Content को इस Binary File में Write किया है।
लेकिन क्योंकि हम एक Binary Content को File में Write करना चाहते हैं, इसलिए हमें हमारे Content को bytes of Strings में Translate करना जरूरी होता है, अन्यथा Python हमारे Content को File में Write नहीं करता। ये Translation करने के लिए हमने निम्नानुसार तरीके से bytes() Function का प्रयोग किया है-
binContent = bytes(“KRISHNA \t MURARI \n”, encoding=”utf-8″)
binContent = bytes(“MADHAV \t BIHARI \n”, encoding=”utf-8″)
जब हम bytes() Function का प्रयोग करते हुए किसी Content को bytes Type Object में Translate करते हैं, तब हमें इस Function के दूसरे Parameter के रूप में Content की Encoding को भी Specify करना होता है, जो कि हमारे Example में ‘utf-8’ है।
Content Write करने के बाद हमने File को Close करके फिर से Open किया है लेकिन इस बार Reading Mode में Open किया है और क्योंकि इस File में Binary Mode में Content को Specify किया गया है, इसलिए इस File को हमने “rb” Opening Mode Specify करते हुए Open किया है और इसीलिए जब हम इस File के Content को Read करते हैं, तो हमें जो Output प्राप्त होता है, वो निम्नानुसार Binary Format में ही प्राप्त होता है-
b’KRISHNA \t MURARI \nMADHAV \t BIHARI \n’
जहां Output के साथ Character ‘b’ Prefix के रूप में Attached है, साथ ही सभी Character Constants जैसे कि Tab ( \b ) व Newline ( \n ) Apply नहीं हो रहे हैं, बल्कि Content की तरह ही दिखाई दे रहे हैं और ऐसा इसीलिए हो रहा है क्येांकि ये File Binary Mode में Opened है और Binary Mode में Character Constants Execute नहीं होते।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Python in Hindi | Page: 602 | Format: PDF