पायथन का बिल्ट-इन खुला () फ़ंक्शन एक फ़ाइल को रीड/राइट मोड में खोलता है और उस पर रीड/राइट ऑपरेशन करता है। एक बैच में कई फाइलों पर प्रोसेसिंग करने के लिए, किसी को fileinput . का उपयोग करना होगा पायथन के मानक पुस्तकालय का मॉड्यूल। यह मॉड्यूल फाइलों पर पुनरावृति की कार्यक्षमता के साथ एक फाइलइनपुट वर्ग प्रदान करता है। मॉड्यूल उसी उद्देश्य के लिए सहायक कार्यों को भी परिभाषित करता है।
इस मॉड्यूल का प्राथमिक इंटरफ़ेस इनपुट () है समारोह। यह फ़ंक्शन Fileinput वर्ग का उदाहरण देता है।
fileinput.input(files, inplace, mode)
फाइल पैरामीटर एक या एक से अधिक फाइलों का नाम है जिन्हें एक-एक करके पढ़ा जाना है। प्रत्येक फ़ाइल एक जनरेटर के रूप में कार्य करती है और लूप के लिए इसका उपयोग करके इसे पुनरावृत्त किया जा सकता है। फ़ाइल की प्रत्येक पंक्ति को Python कंसोल पर प्रिंट किया जाएगा।
>>> for line in fileinput.input('data.txt'): print (line)
फाइल पैरामीटर कई फाइलों से युक्त एक टपल हो सकता है। फाइलों की सामग्री एक-एक करके प्रदर्शित की जाएगी।
>>> for line in fileinput.input(files=('a.txt', 'b.txt')): print (line)
Fileinput वर्ग को with स्टेटमेंट में संदर्भ प्रबंधक के रूप में भी इस्तेमाल किया जा सकता है।
>>> with fileinput.input(files=('a.txt', 'b.txt')) as f: for line in f: print (line)
फाइलइनपुट मॉड्यूल में निम्नलिखित कार्य परिभाषित हैं।
<टेबल> <थहेड>वर्तमान में पढ़ी जा रही फ़ाइल का नाम लौटाता है।
फ़ाइल डिस्क्रिप्टर पूर्णांक देता है।
पढ़ी जा रही फ़ाइल का लाइन नंबर लौटाता है। संख्या संचयी गणना है।
केवल वर्तमान फ़ाइल का लाइन नंबर लौटाता है।
यदि वर्तमान फ़ाइल की पहली पंक्ति पढ़ी जा रही है, तो सही है, अन्यथा गलत है
निम्नलिखित कथन फ़ाइल की प्रत्येक पंक्ति को पंक्ति संख्या के साथ प्रिंट करता है
>>> for line in fileinput.input('books.py'): print ('{}->{}'.format(fileinput.filelineno(), line))
उपरोक्त कोड का नमूना आउटपुट है
1->import sqlite3 2->conn = sqlite3.connect('c:/python36/books.db') 3->cursor = conn.cursor() 4->cursor.execute("SELECT * from books;") 5->print(cursor.fetchall())
निम्नलिखित कोड प्रत्येक फ़ाइल नाम को फ़ोल्डर में प्रिंट करता है, उसके बाद उसमें क्रमांकित लाइनें होती हैं। इस कार्यक्रम में ग्लोब () फ़ंक्शन का उपयोग किया जाता है जो वर्तमान पथ में फ़ाइलों की सूची को वैकल्पिक रूप से मिलान करने वाले वाइल्ड कार्ड के साथ देता है। यहां ग्लोब ('*.py') वर्तमान फ़ोल्डर में .py एक्सटेंशन वाली सभी फाइलों की सूची लौटाएगा। यह सूची fileinput.input() फ़ंक्शन के लिए फ़ाइल पैरामीटर के रूप में उपयोग की जाती है।
import fileinput, glob, sys for line in fileinput.input(glob.glob("*.py")): if fileinput.isfirstline(): print (fileinput.filename(),'>') sys.stdout.write ("{}.{}".format(fileinput.filelineno(),line))
isfirstline() फ़ंक्शन के उपयोग पर ध्यान दें। जब नई फ़ाइल की पुनरावृत्ति शुरू होती है, तो यह फ़ंक्शन सही हो जाता है और फ़ाइल नाम जैसा कि fileinput.filename() फ़ंक्शन द्वारा लौटाया जाता है, पहले मुद्रित होता है और फिर संख्याओं वाली रेखाएं प्रदर्शित होती हैं। उदाहरण के लिए
1.py > 1.a = 10 2.b = 20 3.print ('addition=',a+b) hello.py > 1.x = 10 2.y = 20 3.z = x+y 4.print ("x+y=",z)
इनप्लेस पैरामीटर
डिफ़ॉल्ट रूप से, inplace =fileinput.input () फ़ंक्शन के लिए गलत। यदि इसे सही पर सेट किया जाता है, तो यह इनपुट फ़ाइल को लिखने योग्य बनाता है।
यह मानते हुए कि इसमें निम्नलिखित पाठ के साथ एक 'msg.txt' है।
Hello Python. Good morning
निम्नलिखित कोड फ़ाइल इनपुट मॉड्यूल का उपयोग करके फ़ाइल खोलता है और इसकी सामग्री को जगह में संशोधित करता है।
>>> for line in fileinput.input(files='msg.txt',inplace = True): line = line.replace('morning', 'evening') sys.stdout.write(line)
'msg.txt' किए गए परिवर्तनों को दिखाएगा।