Writing and Reading Python Objects

Writing and Reading Python Objects – जिस तरह से पिछले Example में हमने write() Method का प्रयोग करते हुए String Objects को File में Write किया, ठीक उसी तरह से हम अन्‍य Types के Objects को भी File में Write कर सकते हैं। बस हमें ध्‍यान केवल इतना ही रखना होता है कि हम जो भी Object किसी Text File में Write करें, उसे String Format में Translate करके Write करें और जो भी Object किसी Binary File में Write करें, उसे Bytes Format में Translate करके Write करें। Object Writing की इस प्रक्रिया को ठीक से समझने के लिए हम निम्‍नानुसार एक Simple Example Program Create कर सकते हैं-

[code]
FileName: PythonObjectInFile.py
intObject = 1221
fltObject = 1312.232
strObject = "This is String Content."
lstObject = ['This','is','List','Content']
dicObject = {'key1':'This','key2':'is', 'key3':'Dictionary'}
tplObject = ('This','is','Tuple','Content')
print("Create File data.txt in Writing Mode \n")
fpNames = open("data.txt","w")
fpNames.write("%s, %s \n" % (intObject, fltObject))
fpNames.write(strObject + "\n")
fpNames.write(str(lstObject) + "\n")
fpNames.write(str(dicObject) + "\n")
fpNames.write(str(tplObject) + "\n")
fpNames.close()
print("Open File data.txt in Reading Mode")
fpNames = open("data.txt","r")
print(fpNames.read())
fpNames.close()

Output
Create File data.txt in Writing Mode
Open File data.txt in Reading Mode
1221, 1312.232
This is String Content.
['This', 'is', 'List', 'Content']
{'key1': 'This', 'key2': 'is', 'key3': 'Dictionary'}
('This', 'is', 'Tuple', 'Content')
[/code]

हालांकि जब हमें कोई Data Screen पर Display करना होता है, तब हम print() Function Use करते हैं, जो कि Comma Separated List के रूप में Multiple Arguments Accept कर सकता है लेकिन जब हम write() Method Use करते हैं, तब हम इसका प्रयोग करते हुए केवल किसी Opened File में ही Content को Write कर सकते हैं और ये Method केवल एक Parameter Accept कर सकता है।

इसीलिए इस Method में Multiple Arguments को एक तरह से एक Single String के रूप में Pass करना जरूरी होता है। जिसकी वजह से हमने हमारे इस Example में Specified कई write() Methods में String Concatenation Operator ( + ) का प्रयोग किया है, न कि Comma का क्‍योंकि Comma का प्रयोग करने पर Python अन्‍य Objects को Extra Arguments मान लेता है।

इसी तरह से जब हम print() Function Use करते हैं, जब ये Function स्‍वयं ही Newline के लिए EOL Character Print कर देता है, लेकिन जब हम write() Method Use करते हैं, तब हमें Newline Character को Manually Specify करना जरूरी होता है। इसीलिए इस Example में हमने प्रत्‍येक write() Methods में Newline Character Constant “\n” को Manually Concatenate किया है।

जब एक बार हम किसी File को Open कर लेते हैं, उसके बाद उस File के सारे Contents एक String Object के रूप में हमें हमारे Current Python Program में उपलब्‍ध हो जाते हैं। इसलिए जिस तरह से एक Simple String Object के साथ हम जो भी String Operations Perform कर सकते हैं, वे सभी Operations हम Exactly समान रूप से इस File Content के String Object पर भी Apply कर सकते हैं।

हालांकि हम किसी भी प्रकार के Object को File Content के रूप में Store कर सकते हैं, लेकिन कई बार ऐसी जरूरत होती है कि हम File Object के जिस Data को String के रूप में Store करते हैं, उसे हमें उसी Object Type के रूप में Execute करना होता है न कि String Object के रूप में।

उदाहरण के लिए उपरोक्‍त Example में हमने List, Dictionary व Tuple को भी एक String Object के रूप में File में Write किया है। इसलिए यदि हम इन्‍हें Read करें, तो ये String के रूप में ही Read होंगे, जबकि हम चाहते हैं कि हम इन्‍हें Exactly List, Dictionary व Tuple के रूप में ही Evaluate करें। इस जरूरत को पूरा करने के लिए Python हमें eval() नाम का एक Function Provide करता है, जिसे हम निम्‍नानुसार तरीके से Use कर सकते हैं-

[code]
FileName: ReadOneLineAtATimeFromFile.py
print("Open File data.txt in Reading Mode")
fpNames = open("data.txt","r")
line1 = fpNames.readline()
line2 = fpNames.readline()
line3 = fpNames.readline()
line4 = fpNames.readline()
line5 = fpNames.readline()
lstLine3 = eval(line3)
print("Evaluate List:\n", lstLine3, "\n")
dicLine4 = eval(line4)
print("Evaluate Dictionary:\n", dicLine4, "\n")
tplLine5 = eval(line5)
print("Evaluate Tuple:\n", tplLine5, "\n")
print("List, Dictionary and Tuple Processing", end='')
print(lstLine3[0], dicLine4['key2'], tplLine5[3] )
fpNames.close()

Output
Open File data.txt in Reading Mode
Evaluate List:
 ['This', 'is', 'List', 'Content']
Evaluate Dictionary:
 {'key1': 'This', 'key2': 'is', 'key3': 'Dictionary'}
Evaluate Tuple:
 ('This', 'is', 'Tuple', 'Content')
List, Dictionary and Tuple Processing
This is Content
[/code]

इस Example में हमने पिछले Example द्वारा Create होने वाली data.txt File को ही Open किया है और उसकी प्रत्‍येक Line एक Variable में Store कर लिया है। चूंकि File के सारे Content String Format में ही होते हैं और String Formatting वाले Objects पर हम केवल String Operations ही Perform कर सकते हैं, इसलिए हमने line3, line4line5 को एक Object की तरह Evaluate करने के लिए eval() Function का प्रयोग किया है।

परिणामस्‍वरूप इन तीनों Variables में String के रूप में Stored List, Dictionary व Tuple Objects Actual List, Dictionary व Tuple में Convert हो जाते हैं और एक बार Actual Python Core Type Object में Convert हो जाने के बाद हम इन पर इनसे सम्‍बंधित विभिन्‍न Indexing व Slicing Methods व Operations को Apply कर सकते हैं। इसी वजह से अन्तिम Statement में हम तीनों ही Objects को String की तरह नहीं बल्कि Core Objects की तरह Access कर सके हैं।

Text and Binary Files Management Example Discussion
Writing and Reading Native Python Objects Using Pickle

Python in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Python in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Python in Hindi | Page: 602 | Format: PDF

BUY NOW GET DEMO REVIEWS