Python Academy · पाठ

आउटपुट कैप्चर करना

stdout और stderr पढ़ें

पाठ 2, कुल 4 में से13 चरण

आउटपुट कैप्चर करना, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

stdout कैप्चर करना

कमांड द्वारा प्रिंट की गई सामग्री पढ़ने के लिए capture_output=True दीजिए। टेक्स्ट परिणाम के stdout एट्रिब्यूट में दिखाई देता है।

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)

बाइट बनाम टेक्स्ट

डिफ़ॉल्ट रूप से आउटपुट बाइट्स होता है। इसके बजाय डिकोड की गई स्ट्रिंग पाने के लिए text=True दीजिए; आम तौर पर यही आप चाहते हैं।

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))

अंत का न्यूलाइन हटाना

कमांड आउटपुट अक्सर न्यूलाइन पर समाप्त होता है। मान का उपयोग करने से पहले उसे साफ़ करने के लिए .strip() का उपयोग कीजिए।

import subprocess

cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')

stderr कैप्चर करना

त्रुटियाँ आम तौर पर stderr में जाती हैं और अलग से कैप्चर की जाती हैं। इससे सामान्य आउटपुट और त्रुटि संदेश अलग-अलग रहते हैं।

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())

कोड में आउटपुट का उपयोग करना

कैप्चर किया गया आउटपुट केवल एक स्ट्रिंग होता है, इसलिए आप उसे पार्स कर सकते हैं: पंक्तियों में बाँट सकते हैं, संख्याओं में बदल सकते हैं या अपने प्रोग्राम के बाकी हिस्से में भेज सकते हैं।

import subprocess

cp = subprocess.run(['printf', 'a\nb\nc\n'], capture_output=True, text=True)
lines = cp.stdout.splitlines()
print('line count:', len(lines))
print(lines)

त्रुटि आउटपुट को सामान्य आउटपुट में भेजना

त्रुटि आउटपुट को सामान्य स्ट्रीम में मिलाने के लिए stderr=subprocess.STDOUT सेट कीजिए। इसके बाद दोनों stdout में दिखाई देंगे।

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
                    stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())

इनपुट देना

किसी कमांड के stdin में डेटा भेजने के लिए input आर्ग्युमेंट का उपयोग कीजिए। यहाँ हम टेक्स्ट को cat में पाइप करते हैं।

import subprocess

cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())

check_output शॉर्टकट

subprocess.check_output() कमांड चलाता है और उसका stdout सीधे लौटाता है; विफलता पर अपवाद उठाता है। कैप्चर करने के लिए यह एक सुविधाजनक एक-पंक्ति उपाय है।

import subprocess

out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())

आउटपुट हटाना

किसी कमांड को शांत रखने के लिए उसकी स्ट्रीम को subprocess.DEVNULL पर भेज दीजिए।

import subprocess

cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)

आउटपुट सहित त्रुटियाँ संभालना

check=True का उपयोग करने पर उठाया गया CalledProcessError जाँच के लिए कैप्चर किए गए output और stderr को अब भी साथ रखता है।

import subprocess

try:
    subprocess.run(['ls', '/missing'], capture_output=True, text=True, check=True)
except subprocess.CalledProcessError as e:
    print('failed:', e.returncode)
    print('stderr:', e.stderr.strip())

सब कुछ एक साथ

एक सामान्य सहायक कमांड चलाता है, सफलता जाँचता है और साफ़ टेक्स्ट लौटाता है। यह आम तरीके को समेटता है।

import subprocess

def capture(cmd):
    cp = subprocess.run(cmd, capture_output=True, text=True, check=True)
    return cp.stdout.strip()

print(capture(['echo', 'final result']))

त्वरित जाँच

आउटपुट कैप्चर करने के बारे में अपनी समझ का परीक्षण कीजिए।

पुनरावलोकन

आपने आउटपुट कैप्चर करना सीखा:

  • capture_output=True और text=True से स्ट्रिंग वाला stdout और stderr मिलता है।
  • stderr=subprocess.STDOUT से स्ट्रीम मिलाइए और DEVNULL से आउटपुट शांत कीजिए।
  • input= के माध्यम से इनपुट भेजिए; check_output एक शॉर्टकट है।
  • त्रुटियों में डिबगिंग के लिए कैप्चर किया गया आउटपुट मौजूद रहता है।

अगला विषय: पर्यावरण चर और os मॉड्यूल को पढ़ना।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
76
पाठ
320

अक्सर पूछे जाने वाले प्रश्न

क्या “आउटपुट कैप्चर करना” पाठ निःशुल्क है?

हाँ—“आउटपुट कैप्चर करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“आउटपुट कैप्चर करना” में मैं क्या सीखूँगा?

stdout और stderr पढ़ें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“आउटपुट कैप्चर करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. subprocess से कमांड चलाना
  2. आउटपुट कैप्चर करना
  3. पर्यावरण और os मॉड्यूल
  4. फ़ाइल संचालन के लिए shutil
← Python Academy पर वापस जाएँ