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

पायथन में कई इनपुट स्ट्रीम से लाइनों पर पुनरावृति

पायथन का बिल्ट-इन खुला () फ़ंक्शन एक फ़ाइल को रीड/राइट मोड में खोलता है और उस पर रीड/राइट ऑपरेशन करता है। एक बैच में कई फाइलों पर प्रोसेसिंग करने के लिए, किसी को 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)

फाइलइनपुट मॉड्यूल में निम्नलिखित कार्य परिभाषित हैं।

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

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

>>> 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' किए गए परिवर्तनों को दिखाएगा।


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

    मान लीजिए हमें कंसोल से फर्स्टनाम और लास्टनाम लेना है और हैलो , आपका स्वागत है! जैसा एक प्रॉम्प्ट लिखना है। परिणाम प्राप्त करने के लिए हम प्रारूप () वर्ग का उपयोग कर सकते हैं। हम {} का उपयोग करके स्ट्रिंग में प्लेसहोल्डर कर सकते हैं, फिर प्रारूप () फ़ंक्शन में तर्क पारित कर सकते हैं। तो, अगर इनपुट

  1. पायथन पांडा - डेटाफ्रेम से कई पंक्तियों का चयन कैसे करें

    डेटाफ़्रेम से कई पंक्तियों का चयन करने के लिए, :ऑपरेटर का उपयोग करके सीमा निर्धारित करें। सबसे पहले, आवश्यकता पांडा पुस्तकालय को उपनाम के साथ आयात करें - import pandas as pd अब, एक नया पांडा डेटाफ़्रेम बनाएं - dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],index=['w', 

  1. पाइथन टिंकर कैनवास से लाइनों को कैसे हटाएं?

    कैनवास विजेट के जीयूआई अनुप्रयोग विकास में कई उपयोग-मामले हैं। हम आकार बनाने, ग्राफिक्स, चित्र और कई अन्य चीजों को बनाने के लिए कैनवास विजेट का उपयोग कर सकते हैं। कैनवास में एक रेखा खींचने के लिए, हम create_line(x,y,x1,y1, **विकल्प) का उपयोग कर सकते हैं ) तरीका। टिंकर में, हम दो प्रकार की रेखाएँ खीं