Loops and File Handling

Loops and File Handling – इस तरह से Loops उस समय बहुत उपयोगी साबित होते हैं, जब हमें एक ही तरह के Statement को किसी Specific Condition के आधार पर एक से ज्‍यादा बार Repeat करना होता है और File Management से सम्‍बंधित Applications में इनका प्रयोग बहुतायत से किया जाता है क्‍योंकि एक ही File में Multiple Characters व Lines के Content होते हैं, जिन्‍हें विभिन्‍न प्रकार की जरूरतों को पूरा करने के लिए विभिन्‍न तरीकों से Access and Manipulate किया जाना जरूरी होता है।

उदाहरण के लिए यदि हम किसी File के सम्‍पूर्ण Content को एक Single String Object के रूप में Handle करना चाहते हैं, तो इस जरूरत को पूरा करने के लिए हम निम्‍नानुसार file Object के read() Method को Use कर सकते हैं-

[code]
# Read contents into a string
fileHandle = open('myfile.txt', 'r')
print(fileHandle.read())
[/code]

लेकिन जब कभी हमें किसी File के Content को छोटे-छोटे टुकड़ों के रूप में Access करना होता है, तब इस तरह की जरूरत को पूरा करने के लिए हम सामान्‍यत: while Loop का प्रयोग करते हैं, जिसमें File के अन्‍त को Represent करने के लिए break Statement के साथ File के End-of-File (EOF) Mark का प्रयोग किया जाता है।

उदाहरण के लिए यदि हमें किसी File के प्रत्‍येक Character को One by One Access and Manipulate करना हो, तो हम इस तरह की जरूरत को पूरा करने के लिए निम्‍नानुसार तरीके से while Loop का प्रयोग करते हुए Code लिख सकते हैं-

[code]
FileName: fileReading-whileLoop.py
fileHandle = open('fileReading-whileLoop.py')
while True:
    char = fileHandle.read(1) #Read by Character by Character
    if not char: break #Empty String Means End-of-File (EOF)
    print(char, end='')

Output
fileHandle = open('fileReading-whileLoop.py')
while True:
    char = fileHandle.read(1) #Read by Character by Character
    if not char: break #Empty String Means End-of-File (EOF)
    print(char, end='')
[/code]

इस Example Code में सबसे पहले हमने Current File fileReading-whileLoop.py नाम की Disk File के Reference को ही fileHandle नाम के File Object में Store कर लिया है क्‍योंकि हम इसी File के Content को Character by Character Read करना चाहते हैं।

फिर एक Infinite Loop (while True:) चलाया गया है, जो हर Iteration में fileHandle से Referenced Disk File से एक बार में एक Character को Read करके उसे char नाम के Object में Store कर देता है।

फिर अगले Statement में एक if Statement द्वारा इस बात को Check करवाया गया है कि char Object में कोई Character Exist है या नहीं। यदि fileHandle से Referenced File में एक भी Character Read होने के लिए बचा हुआ है, तो char False नहीं होगा, परिणामस्‍वरूप while Loop चलता रहेगा।

लेकिन जैसे ही File का अन्तिम Character Read हो जाएगा, char में Read होने के लिए कोई Character नहीं बचेगा, फलस्‍वरूप char False हो जाएगा और char के False होते ही, if not char: Statement True हो जाएगा जहां Program Control को break Statement मिलेगा और Program Control, Loop से Exit हो जाएगा।

Exactly इसी Program को हम निम्‍नानुसार तरीके से for Loop का प्रयोग करते हुए भी Create कर सकते हैं-

[code]
FileName: fileReading-forLoop.py
fileHandle = open('fileReading-forLoop.py')
for char in fileHandle.read():
    print(char, end='')

Output
fileHandle = open('fileReading-forLoop.py')
for char in fileHandle.read():
    print(char, end='')
[/code]

इसी for Loop को हम निम्‍नानुसार तरीके से भी Specify कर सकते हैं-

[code]
for char in open('fileReading-forLoop.py').read():
    print(char, end='')
[/code]

लेकिन जब हम for Loop को इस तरह से Specify करते हैं, तब Specified File का सारा Content एक ही बार में Memory में Load हो जाता है। इसलिए इस Statement को तभी Use करना चाहिए, जबकि Access की जा रही Disk File की Size काफी छोटी हो।

हम हमेंशा किसी File के सभी Characters को One by One Read नहीं करते। बल्कि कई बार जरूरत के अनुसार हम एक बार में File की पूरी एक Line को Read करते हैं और जब हम पूरी Line को Read करना चाहते हैं, तब भी हमें Looping Statement को तो Use करना ही होता है लेकिन उस समय File के Content को Read करने के लिए लिखा जाने वाला Code निम्‍नानुसार होता है-

[code]
FileName: fileReading-LineByLine.py
fileHandle = open('fileReading-LineByLine.py')
while True:
    line = fileHandle.readline() #Read Line by Line
    if not line: break
    print(line.rstrip())

Output
fileHandle = open('fileReading-LineByLine.py')
while True:
    line = fileHandle.readline() #Read Line by Line
    if not line: break
    print(line.rstrip())
[/code]

जब ये Program Run होता है, तब readline() Method, Referenced File की प्रत्‍येक Line को One by One Read करता है और तब तक करता रहता है, जब तक‍ कि File में एक भी Line का Content Unread रहता है।

जैसे ही File की प्रत्‍येक Line Read हो जाती है, line Variable False हो जाता है, जिसके परिणामस्‍वरूप if not line: Statement True हो जाता है और Program Control इस if Statement Block में Enter करता है, जहां उसे break Statement मिलता है और Program Control, while Loop से Exit हो जाता है।

File से Read होने वाली प्रत्‍येक Line को Output में Print करने के लिए print() Function में rstrip() Method को Use किया गया है। ये Method Read होने वाली Line के अन्‍त में Exist ‘\n’ Character को Strip करने का काम करता है क्‍योंकि File की हर Line का अन्‍त एक ‘\n’ Character से ही होता है।

इसलिए यदि हम इस ‘\n’ Character Constant को rstrip() Method का प्रयोग करते हुए Strip न करें, तो उस स्थिति में हमें अपने print() Function को निम्‍नानुसार Specify करना जरूरी होता है-

[code]
    print(line, end='') 
[/code]

अन्‍यथा हमें मिलने वाले Output में दो Newlines दिखाई देने लगते हैं, जहां पहला Newline, File से Read होने वाला ‘\n’ होता है जबकि दूसरा Newline print() Function की वजह से दिखाई देता है। जबकि इसी जरूरत को हम while Loop के स्‍थान पर for Loop के माध्‍यम से पूरा करना चाहें, तो हमें हमारा for Loop Code निम्‍नानुसार लिखना होगा-

[code]
FileName: fileReading-LineByLine-forLoop.py
for line in open('fileReading-LineByLine-forLoop.py').readlines():
    print(line.rstrip())

# Use iterators: best for text input
for line in open('fileReading-LineByLine-forLoop.py'):
    print(line.rstrip())
[/code]

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