subprocess से कमांड चलाना
बाहरी प्रोग्राम चलाएँ
subprocess से कमांड चलाना, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
subprocess क्या है?
subprocess मॉड्यूल आपके Python प्रोग्राम को बाहरी कमांड और अन्य प्रोग्राम चलाने देता है, ठीक वैसे ही जैसे उन्हें टर्मिनल में टाइप किया जाता है।
import subprocess
result = subprocess.run(['echo', 'hello'])
print('return code:', result.returncode)subprocess.run की मूल बातें
subprocess.run() अनुशंसित प्रारंभिक बिंदु है। कमांड को आर्ग्युमेंट्स की सूची के रूप में दीजिए: पहले प्रोग्राम का नाम और फिर प्रत्येक आर्ग्युमेंट अलग-अलग।
import subprocess
result = subprocess.run(['echo', 'one', 'two'])
print('done with code', result.returncode)सूची, स्ट्रिंग क्यों नहीं?
सूची देने से शेल आपके कमांड का विश्लेषण नहीं करता, जिससे उद्धरण संबंधी गलतियाँ और शेल-इंजेक्शन के जोखिम से बचाव होता है। हर तत्व एक आर्ग्युमेंट होता है।
import subprocess
# Safe: each piece is its own argument
subprocess.run(['echo', 'a file with spaces.txt'])CompletedProcess ऑब्जेक्ट
run() एक CompletedProcess लौटाता है, जिसमें args, returncode और कैप्चर किया गया हो तो आउटपुट होता है। कोड 0 सफलता दर्शाता है।
import subprocess
cp = subprocess.run(['true'])
print('args:', cp.args)
print('returncode:', cp.returncode)रिटर्न कोड जाँचना
गैर-शून्य रिटर्न कोड का आम तौर पर अर्थ है कि कमांड विफल हो गया। कॉल के बाद आप इसे मैन्युअल रूप से जाँच सकते हैं।
import subprocess
cp = subprocess.run(['ls', '/no/such/path'])
if cp.returncode != 0:
print('command failed with', cp.returncode)check=True के साथ विफलता पर अपवाद उठाना
कमांड के गैर-शून्य स्थिति के साथ समाप्त होने पर run() से अपने-आप CalledProcessError उठवाने के लिए check=True दीजिए।
import subprocess
try:
subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
print('failed with code', e.returncode)आर्ग्युमेंट देना
अतिरिक्त कमांड आर्ग्युमेंट बस सूची के और आइटम होते हैं। यहाँ हम किसी डायरेक्टरी को विस्तृत प्रारूप में सूचीबद्ध करते हैं।
import subprocess
subprocess.run(['echo', '-n', 'no newline'])
print()
print('above echo had -n flag')समय-सीमा निर्धारित करना
बहुत देर तक चलने वाले कमांड को रोकने के लिए timeout का उपयोग कीजिए। इससे TimeoutExpired उठता है।
import subprocess
try:
subprocess.run(['sleep', '5'], timeout=0.1)
except subprocess.TimeoutExpired:
print('command took too long, aborted')कार्यशील डायरेक्टरी
cwd आर्ग्युमेंट कमांड को किसी विशेष डायरेक्टरी में चलाता है, बिना आपके अपने प्रोग्राम की कार्यशील डायरेक्टरी बदले।
import subprocess
subprocess.run(['pwd'], cwd='/tmp')shell=True विकल्प
shell=True के साथ आप एकल कमांड स्ट्रिंग देते हैं, जिसका शेल विश्लेषण करता है। इससे पाइप और ग्लॉब सक्षम होते हैं, लेकिन अविश्वसनीय इनपुट के साथ यह जोखिमपूर्ण है। सूची वाले रूप को प्राथमिकता दीजिए।
import subprocess
subprocess.run('echo hello && echo world', shell=True)os.system से बचना
पुराना os.system केवल निकास कोड लौटाता है और आर्ग्युमेंट सुरक्षित रूप से देने या आउटपुट कैप्चर करने की सुविधा नहीं देता। नए सभी कोड के लिए subprocess.run इसका स्थान लेता है।
import subprocess
# Modern, safe approach
cp = subprocess.run(['echo', 'modern way'])
print('exit code:', cp.returncode)त्वरित जाँच
कमांड चलाने के बारे में अपनी समझ का परीक्षण कीजिए।
पुनरावलोकन
आपने subprocess के साथ कमांड चलाना सीखा:
subprocess.run([...])किसी बाहरी प्रोग्राम को सुरक्षित रूप से चलाता है।- यह
returncodeवालेCompletedProcessको लौटाता है। check=Trueविफलता पर अपवाद उठाता है;timeoutधीमे कमांड को रोकता है।shell=Trueके बजाय सूची वाले रूप को प्राथमिकता दीजिए।
अगला विषय: कमांड के आउटपुट को कैप्चर करना।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 76
- पाठ
- 320
अक्सर पूछे जाने वाले प्रश्न
क्या “subprocess से कमांड चलाना” पाठ निःशुल्क है?
हाँ—“subprocess से कमांड चलाना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“subprocess से कमांड चलाना” में मैं क्या सीखूँगा?
बाहरी प्रोग्राम चलाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“subprocess से कमांड चलाना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- subprocess से कमांड चलाना
- आउटपुट कैप्चर करना
- पर्यावरण और os मॉड्यूल
- फ़ाइल संचालन के लिए shutil