Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में मल्टीपल इनपुट स्ट्रीम्स से लाइन्स पर इटरेट करना

Python का बिल्ट-इन open() फ़ंक्शन एक फ़ाइल को रीड/राइट मोड में खोलता है और उस पर रीड/राइट ऑपरेशन करता है। बैच में मल्टीपल फ़ाइलों पर प्रोसेसिंग करने के लिए, Python की स्टैंडर्ड लाइब्रेरी के fileinput मॉड्यूल का उपयोग करना पड़ता है। यह मॉड्यूल फ़ाइलों पर इटरेट करने की कार्यक्षमता के साथ FileInput क्लास प्रदान करता है। मॉड्यूल इसी उद्देश्य के लिए हेल्पर फ़ंक्शन्स भी डिफाइन करता है।

इस मॉड्यूल का प्राथमिक इंटरफ़ेस input() फ़ंक्शन है। यह फ़ंक्शन FileInput क्लास का इंस्टेंस लौटाता है।

fileinput.input(files, inplace, mode)

files पैरामीटर पढ़ी जाने वाली एक या अधिक फ़ाइलों का नाम है। प्रत्येक फ़ाइल एक जेनरेटर की तरह काम करती है और फॉर लूप का उपयोग करके इस पर इटरेट किया जा सकता है। फ़ाइल में प्रत्येक लाइन Python कंसोल पर प्रिंट होगी।

>>> for line in fileinput.input('data.txt'):
...     print(line)

files पैरामीटर कई फ़ाइलों का टपल हो सकता है। फ़ाइलों की सामग्री एक-एक करके प्रदर्शित होगी।

>>> 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)

fileinput मॉड्यूल में निम्न फ़ंक्शन्स डिफाइन हैं:

क्र.सं.फ़ंक्शन और विवरण
1filename()
वर्तमान में पढ़ी जा रही फ़ाइल का नाम लौटाता है।
2fileno()
फ़ाइल डिस्क्रिप्टर इंटीजर लौटाता है।
3lineno()
पढ़ी जा रही फ़ाइल का लाइन नंबर लौटाता है। संख्या संचयी गिनती है।
4filelineno()
केवल वर्तमान फ़ाइल का लाइन नंबर लौटाता है।
5isfirstline()
यदि वर्तमान फ़ाइल की पहली लाइन पढ़ी जा रही है तो true लौटाता है, अन्यथा false।

निम्न स्टेटमेंट फ़ाइल में प्रत्येक लाइन को लाइन नंबर के साथ प्रिंट करता है:

>>> 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())

निम्न कोड फ़ोल्डर में प्रत्येक फ़ाइल नाम को प्रिंट करता है जिसके बाद उसमें नंबर वाली लाइन्स होती हैं। इस प्रोग्राम में glob() फ़ंक्शन का उपयोग किया गया है जो करंट पथ में फ़ाइलों की सूची लौटाता है, वैकल्पिक रूप से वाइल्ड कार्ड्स से मिलान करके। यहां glob('*.py') करंट फ़ोल्डर में .py एक्सटेंशन वाली सभी फ़ाइलों की सूची लौटाएगा। इस सूची का उपयोग fileinput.input() फ़ंक्शन के files पैरामीटर के रूप में किया जाता है।

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() फ़ंक्शन के उपयोग पर ध्यान दें। जब नई फ़ाइल का इटरेशन शुरू होता है, तो यह फ़ंक्शन true लौटाता है और 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() फ़ंक्शन के लिए inplace = False होता है। यदि इसे True पर सेट किया जाए, तो यह इनपुट फ़ाइल को राइटेबल बनाता है।

मान लें कि 'msg.txt' में निम्न टेक्स्ट है:

Hello Python. Good morning

निम्न कोड fileinput मॉड्यूल का उपयोग करके फ़ाइल खोलता है और इसकी सामग्री को इन-प्लेस संशोधित करता है:

>>> for line in fileinput.input(files='msg.txt', inplace=True):
...     line = line.replace('morning', 'evening')
...     sys.stdout.write(line)

'msg.txt' में किए गए परिवर्तन दिखाई देंगे।

  1. - पायथन में कंसोल से इनपुट पढ़ने का प्रोग्राम

    मान लीजिए हमें कंसोल से firstname और lastname लेना है और Hello , you are welcome! जैसा प्रॉम्प्ट लिखना है। परिणाम प्राप्त करने के लिए हम format() क्लास का उपयोग कर सकते हैं। हम {} का उपयोग करके स्ट्रिंग में प्लेसहोल्डर रख सकते हैं, फिर format() फंक्शन में आर्गुमेंट पास कर सकते हैं।उदाहरण के लिए, यद

  1. - Python Pandas - DataFrame से एकाधिक पंक्तियों का चयन कैसे करें

    DataFrame से एकाधिक पंक्तियों का चयन करने के लिए, : ऑपरेटर का उपयोग करके रेंज सेट करें। सबसे पहले, उपनाम के साथ आवश्यक pandas लाइब्रेरी आयात करें: import pandas as pd अब, एक नया Pandas DataFrame बनाएं: dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],index=[w, x, y, z],columns=[a,

  1. Python Tkinter कैनवास से लाइन्स कैसे डिलीट करें? Python Tkinter कैनवास से लाइन्स कैसे डिलीट करें?

    कैनवास विजेट के GUI एप्लिकेशन डेवलपमेंट में कई उपयोग हैं। हम कैनवास विजेट का उपयोग शेप्स ड्रॉ करने, ग्राफिक्स, इमेज, और कई अन्य चीजें बनाने के लिए कर सकते हैं। कैनवास में लाइन ड्रॉ करने के लिए, हम create_line(x,y,x1,y1, **options) मेथड का उपयोग कर सकते हैं। Tkinter में, हम दो प्रकार की लाइन्स ड्रॉ