पायथनमध्ये बाह्य आदेश कसे चालवायचे

पायथनमध्ये बाह्य आदेश कसे चालवायचे
पायथनमध्ये बाह्य आदेश कसे चालवायचे

पायथन वरून सिस्टम कमांड चालवत आहे

पायथन तुमच्या स्क्रिप्टमधून थेट बाह्य प्रोग्राम्स आणि सिस्टम कमांड्स कार्यान्वित करण्यासाठी शक्तिशाली क्षमता प्रदान करते. हे वैशिष्ट्य तुम्हाला तुमच्या ऑपरेटिंग सिस्टीममध्ये उपलब्ध साधनांच्या विस्तृत श्रेणीचा लाभ घेताना पायथनच्या साधेपणाचा लाभ घेण्यास अनुमती देते.

तुम्ही पुनरावृत्ती होणारी कार्ये स्वयंचलित करत असाल किंवा जटिल वर्कफ्लो एकत्रित करत असाल, पायथनमध्ये सिस्टम कमांड्स कसे कॉल करायचे हे समजून घेणे तुमची उत्पादकता लक्षणीयरीत्या वाढवू शकते. या मार्गदर्शकामध्ये, आम्ही हे प्रभावीपणे साध्य करण्यासाठी विविध पद्धती शोधू.

आज्ञा वर्णन
subprocess.run सबशेलमध्ये कमांड कार्यान्वित करते. आउटपुट आणि त्रुटी कॅप्चर करू शकतात.
subprocess.run([...], capture_output=True) निष्पादित कमांडचे मानक आउटपुट आणि मानक त्रुटी कॅप्चर करते.
subprocess.run([...], shell=True) वाइल्डकार्ड्स सारख्या शेल वैशिष्ट्यांना अनुमती देऊन शेलद्वारे कमांड चालवते.
subprocess.Popen नवीन प्रक्रियेत कमांड कार्यान्वित करते, त्याच्या अंमलबजावणीवर अधिक नियंत्रण प्रदान करते.
process.stdout.readline() प्रक्रियेच्या मानक आउटपुटमधून आउटपुटची एक ओळ वाचते.
os.system सबशेलमध्ये कमांड कार्यान्वित करते, सामान्यतः साध्या कमांडच्या अंमलबजावणीसाठी वापरली जाते.
subprocess.check_output कमांड चालवते आणि त्याचे आउटपुट परत करते. आदेश अयशस्वी झाल्यास अपवाद वाढवते.
os.environ.copy() बदलांना अनुमती देऊन, वर्तमान पर्यावरण चलांची एक प्रत तयार करते.
env parameter in subprocess.run नवीन प्रक्रियेसाठी पर्यावरणीय चल निर्दिष्ट करते.

पायथनमध्ये स्क्रिप्ट एक्झिक्यूशन समजून घेणे

प्रदान केलेल्या स्क्रिप्ट्स Python वापरून बाह्य आदेश कार्यान्वित करण्याचे विविध मार्ग दाखवतात. द subprocess.run कमांड अष्टपैलू आहे, ज्यामुळे तुम्हाला तुमच्या पायथन स्क्रिप्टमधून थेट शेल कमांड्स चालवता येतात. उदाहरणार्थ, कन्सोलवर संदेश छापतो, तर subprocess.run(['ls', '-l'], capture_output=True, text=True) चे आउटपुट कॅप्चर करते ls -l कमांड, तपशीलवार निर्देशिका सूची प्रदर्शित करते. वापरत आहे shell=True सह subprocess.run शेल वैशिष्ट्यांचा वापर करण्यास अनुमती देते, जसे की वाइल्डकार्ड विस्तार, ते अधिक जटिल आदेशांसाठी सुलभ करते.

subprocess.Popen कमांड ॲसिंक्रोनस कमांड चालवण्यास आणि प्रक्रियेच्या इनपुट आणि आउटपुट प्रवाहांसह परस्परसंवादास अनुमती देऊन कमांड एक्झिक्यूशनवर अधिक नियंत्रण प्रदान करते. उदाहरणार्थ, सह स्क्रिप्ट उदाहरण स्थानिक मशीनला सतत पिंग करते आणि आउटपुटची प्रत्येक ओळ वाचते. याव्यतिरिक्त, os.system साध्या कमांडच्या अंमलबजावणीसाठी वापरले जाते परंतु लवचिकतेचा अभाव आहे . एन्व्हायर्नमेंट व्हेरिएबल्स सुधारित केले जाऊ शकतात आणि वापरून सबप्रोसेसमध्ये पास केले जाऊ शकतात os.environ.copy() आणि ते env मध्ये पॅरामीटर subprocess.run, पर्यावरणावर आधारित डायनॅमिक कमांड कार्यान्वित करण्यास अनुमती देते.

पायथनमध्ये बाह्य आदेश कार्यान्वित करणे

पायथनचे सबप्रोसेस मॉड्यूल वापरणे

import subprocess
# Example 1: Running a simple shell command
subprocess.run(['echo', 'Hello, World!'])
# Example 2: Capturing the output of a command
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
# Example 3: Running a command with shell=True
subprocess.run('echo Hello from the shell', shell=True)
# Example 4: Checking the return code
result = subprocess.run(['ls', 'nonexistentfile'], capture_output=True)
if result.returncode != 0:
    print('Command failed')
# Example 5: Using subprocess.Popen for more control
process = subprocess.Popen(['ping', 'localhost'], stdout=subprocess.PIPE)
while True:
    output = process.stdout.readline()
    if output == b'' and process.poll() is not None:
        break
    if output:
        print(output.strip().decode())

पायथनसह स्वयंचलित सिस्टम कार्ये

os.system आणि subprocess मॉड्यूल वापरणे

सिस्टम कमांड एक्झिक्युशनसाठी प्रगत तंत्रे

पायथनमध्ये सिस्टीम कमांड कार्यान्वित करण्याच्या आणखी एका पैलूमध्ये वापरणे समाविष्ट आहे shlex शेल कमांड पार्सिंग हाताळण्यासाठी मॉड्यूल. हे मॉड्युल शेल कमांडला सूचीच्या स्वरूपात विभाजित करण्याचा मार्ग प्रदान करते, ज्याला नंतर पास केले जाऊ शकते कार्ये हे सुनिश्चित करते की स्पेससह युक्तिवाद योग्यरित्या हाताळले जातात. याव्यतिरिक्त, आपण वापरू शकता १५ मानक इनपुट, आउटपुट आणि त्रुटी प्रवाहांना मूळ प्रक्रियेकडे निर्देशित करण्यासाठी, अधिक जटिल आंतर-प्रक्रिया संप्रेषणास अनुमती देऊन.

उदाहरणार्थ, एका कमांडचे आउटपुट दुसऱ्या कमांडमध्ये पाइप करून क्रमाने कमांड्स चेन करणे आणि त्यांच्या आउटपुटवर प्रक्रिया करणे हे साध्य करता येते. subprocess.Popen. हे तुम्हाला शेल स्क्रिप्टमध्ये तुम्ही काय कराल याप्रमाणे शक्तिशाली कमांड सीक्वेन्स तयार करण्यास अनुमती देते. तुम्ही देखील वापरू शकता १७ एकाच वेळी एकाधिक सबप्रोसेस कमांड चालवण्यासाठी, तुमच्या स्क्रिप्टची कार्यक्षमता वाढवते, विशेषत: I/O-बाउंड कार्ये हाताळताना.

Python मध्ये सिस्टम कमांड्स कार्यान्वित करण्यासाठी वारंवार विचारले जाणारे प्रश्न

  1. मी शेल कमांड कशी चालवू शकतो आणि त्याचे आउटपुट पायथनमध्ये कसे मिळवू शकतो?
  2. वापरा subprocess.run सह capture_output=True कमांडचे आउटपुट कॅप्चर करण्यासाठी.
  3. यांच्यात काय फरक आहे subprocess.run आणि subprocess.Popen?
  4. subprocess.run एक सोपा इंटरफेस आहे जो कमांड पूर्ण होण्याची वाट पाहतो subprocess.Popen आदेश अंमलबजावणीवर अधिक नियंत्रण देते, अतुल्यकालिक ऑपरेशनला अनुमती देते.
  5. सिस्टम कमांड चालवताना मी त्रुटी कशी हाताळू?
  6. वापरा २४ आणि २५ सह ब्लॉक २६ चुका पकडणे आणि हाताळणे.
  7. मी एन्व्हायर्नमेंट व्हेरिएबल्स कमांडला पास करू शकतो का?
  8. होय, वापरा env मध्ये पॅरामीटर subprocess.run किंवा subprocess.Popen पर्यावरण व्हेरिएबल्स पास करण्यासाठी.
  9. मी क्रमाने अनेक कमांड्स कसे चालवू?
  10. वापरा subprocess.run किंवा subprocess.Popen सह पाईप्स वापरुन लूप किंवा चेन कमांडमध्ये subprocess.Popen.
  11. वापरकर्ता इनपुट आवश्यक असलेली कमांड मी कशी कार्यान्वित करू शकतो?
  12. वापरा subprocess.Popen सह ३४ आणि वापरून प्रक्रियेशी संवाद साधा process.communicate.
  13. काय उपयोग आहे shlex आदेश अंमलबजावणी मध्ये?
  14. shlex शेल कमांडचे योग्यरितीने पार्स करण्यास मदत करते, स्पेससह युक्तिवाद योग्यरित्या हाताळले जातात याची खात्री करून.
  15. मी पार्श्वभूमीत कमांड कशी चालवू?
  16. वापरा subprocess.Popen प्रक्रिया पूर्ण होण्याची प्रतीक्षा न करता, किंवा वापरा १७ पार्श्वभूमी अंमलबजावणी व्यवस्थापित करण्यासाठी.

सिस्टम कमांड एक्झिक्युशनसाठी प्रगत तंत्रे

पायथनमधील सिस्टम कमांड्सची अंमलबजावणी करण्याच्या आणखी एका पैलूमध्ये वापरणे समाविष्ट आहे shlex शेल कमांड पार्सिंग हाताळण्यासाठी मॉड्यूल. हे मॉड्युल शेल कमांडला सूचीच्या स्वरूपात विभाजित करण्याचा मार्ग प्रदान करते, ज्याला नंतर पास केले जाऊ शकते कार्ये हे सुनिश्चित करते की स्पेससह युक्तिवाद योग्यरित्या हाताळले जातात. याव्यतिरिक्त, आपण वापरू शकता १५ मानक इनपुट, आउटपुट आणि त्रुटी प्रवाहांना मूळ प्रक्रियेकडे निर्देशित करण्यासाठी, अधिक जटिल आंतर-प्रक्रिया संप्रेषणास अनुमती देऊन.

उदाहरणार्थ, एका कमांडचे आउटपुट दुसऱ्या कमांडमध्ये पाइप करून क्रमाने कमांड्स चेन करणे आणि त्यांच्या आउटपुटवर प्रक्रिया करणे हे साध्य करता येते. subprocess.Popen. हे तुम्हाला शेल स्क्रिप्टमध्ये तुम्ही काय कराल याप्रमाणे शक्तिशाली कमांड सीक्वेन्स तयार करण्यास अनुमती देते. आपण देखील वापरू शकता १७ एकाधिक सबप्रोसेस कमांड्स एकाच वेळी चालवण्यासाठी, तुमच्या स्क्रिप्टची कार्यक्षमता वाढवते, विशेषत: I/O-बाउंड कार्ये हाताळताना.

पायथन मधील कमांड कार्यान्वित करण्याचे अंतिम विचार

पायथनमध्ये बाह्य आदेशांची अंमलबजावणी करणे ही एक बहुमुखी आणि शक्तिशाली क्षमता आहे जी तुमची स्क्रिप्टिंग आणि ऑटोमेशन कार्ये लक्षणीयरीत्या वाढवू शकते. वापरून मॉड्यूलमध्ये, तुम्ही शेल कमांड्स चालवू शकता, त्यांचे आउटपुट कॅप्चर करू शकता आणि त्रुटी प्रभावीपणे हाताळू शकता. द os.system फंक्शन मूलभूत कमांडच्या अंमलबजावणीसाठी एक सोपा पर्याय प्रदान करते. याव्यतिरिक्त, समाविष्ट करणे shlex मॉड्यूल जटिल शेल कमांडचे योग्य विश्लेषण सुनिश्चित करते. ही तंत्रे समजून घेतल्याने तुम्हाला तुमच्या ऑपरेटिंग सिस्टमच्या कमांड-लाइन टूल्सच्या पूर्ण क्षमतेचा वापर करून पायथनच्या सामर्थ्याचा फायदा घेता येतो.