प्रोग्राम आउटपुट कैप्चर करना: नाइव सॉल्यूशंस से परे
पायथन स्क्रिप्टिंग में, आगे की प्रक्रिया के लिए प्रोग्राम आउटपुट कैप्चर करना एक आम जरूरत है। हालांकि भोले-भाले समाधान सीधे प्रतीत हो सकते हैं, लेकिन वे अक्सर कम पड़ जाते हैं। निम्नलिखित स्क्रिप्ट पर विचार करें जो stdout को लिखती है:
# writer.py import sys def write(): sys.stdout.write("foobar")
निम्न कोड का उपयोग करके आउटपुट कैप्चर करने का प्रयास विफल रहता है:
# mymodule.py from writer import write out = write() print(out.upper())
आउटपुट को प्रभावी ढंग से कैप्चर करने के लिए, एक अधिक मजबूत समाधान की आवश्यकता है। एक दृष्टिकोण में सिस्टम की स्टडआउट स्ट्रीम को संशोधित करना शामिल है:
import sys from cStringIO import StringIO # Redirect stdout to a StringIO object backup = sys.stdout sys.stdout = StringIO() # Perform the write operation write() # Retrieve and restore stdout out = sys.stdout.getvalue() sys.stdout.close() sys.stdout = backup # Process the captured output print(out.upper())
पायथन 3.4 के लिए संदर्भ प्रबंधक:
पायथन 3.4 और बाद के संस्करण के लिए, contextlib का उपयोग करके एक सरल और अधिक संक्षिप्त समाधान उपलब्ध है। रीडायरेक्ट_स्टडआउट संदर्भ प्रबंधक:
from contextlib import redirect_stdout import io f = io.StringIO() # Redirect stdout to f using the context manager with redirect_stdout(f): help(pow) # Retrieve captured output from f s = f.getvalue()
यह शानदार दृष्टिकोण आउटपुट कैप्चरिंग प्रक्रिया को सरल बनाता है, जिससे आपकी पायथन स्क्रिप्ट को संभालना आसान हो जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3