পাইথন থেকে সিস্টেম কমান্ড চালানো হচ্ছে
পাইথন আপনার স্ক্রিপ্ট থেকে সরাসরি বাহ্যিক প্রোগ্রাম এবং সিস্টেম কমান্ড কার্যকর করার জন্য শক্তিশালী ক্ষমতা প্রদান করে। এই বৈশিষ্ট্যটি আপনাকে আপনার অপারেটিং সিস্টেমে উপলব্ধ সরঞ্জামগুলির বিশাল অ্যারের সুবিধা নেওয়ার সময় পাইথনের সরলতা লাভ করতে দেয়।
আপনি পুনরাবৃত্তিমূলক কাজগুলিকে স্বয়ংক্রিয় করছেন বা জটিল ওয়ার্কফ্লোগুলিকে একীভূত করছেন না কেন, পাইথনে সিস্টেম কমান্ডগুলি কীভাবে কল করবেন তা বোঝা আপনার উত্পাদনশীলতাকে উল্লেখযোগ্যভাবে বাড়িয়ে তুলতে পারে। এই নির্দেশিকাতে, আমরা এটি কার্যকরভাবে অর্জন করার জন্য বিভিন্ন পদ্ধতি অন্বেষণ করব।
| আদেশ | বর্ণনা |
|---|---|
| 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 | নতুন প্রক্রিয়ার জন্য পরিবেশ ভেরিয়েবল নির্দিষ্ট করে। |
পাইথনে স্ক্রিপ্ট এক্সিকিউশন বোঝা
প্রদত্ত স্ক্রিপ্টগুলি পাইথন ব্যবহার করে বাহ্যিক কমান্ডগুলি চালানোর বিভিন্ন উপায় প্রদর্শন করে। দ্য কমান্ডটি বহুমুখী, আপনাকে আপনার পাইথন স্ক্রিপ্ট থেকে সরাসরি শেল কমান্ড চালানোর অনুমতি দেয়। এই ক্ষেত্রে, কনসোলে একটি বার্তা প্রিন্ট করে, যখন এর আউটপুট ক্যাপচার করে ls -l কমান্ড, একটি বিস্তারিত ডিরেক্টরি তালিকা প্রদর্শন করে। ব্যবহার সঙ্গে শেল বৈশিষ্ট্যগুলি ব্যবহার করার অনুমতি দেয়, যেমন ওয়াইল্ডকার্ড সম্প্রসারণ, এটি আরও জটিল কমান্ডের জন্য সহজ করে তোলে।
দ্য কমান্ড প্রক্রিয়াটির ইনপুট এবং আউটপুট স্ট্রীমগুলির সাথে অ্যাসিঙ্ক্রোনাস কমান্ড চলমান এবং মিথস্ক্রিয়া করার অনুমতি দিয়ে কমান্ড এক্সিকিউশনের উপর আরও নিয়ন্ত্রণ সরবরাহ করে। উদাহরণস্বরূপ, সঙ্গে স্ক্রিপ্ট উদাহরণ ক্রমাগত স্থানীয় মেশিনে পিং করে এবং আউটপুটের প্রতিটি লাইন পড়ে। উপরন্তু, সাধারণ কমান্ড কার্যকর করার জন্য ব্যবহার করা হয় তবে এর নমনীয়তার অভাব রয়েছে subprocess. এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তন করা যায় এবং ব্যবহার করে সাবপ্রসেসে পাস করা যায় এবং মধ্যে প্যারামিটার , পরিবেশের উপর ভিত্তি করে গতিশীল কমান্ড কার্যকর করার অনুমতি দেয়।
পাইথনে এক্সটার্নাল কমান্ড এক্সিকিউট করা
পাইথনের সাবপ্রসেস মডিউল ব্যবহার করে
import subprocess# Example 1: Running a simple shell commandsubprocess.run(['echo', 'Hello, World!'])# Example 2: Capturing the output of a commandresult = subprocess.run(['ls', '-l'], capture_output=True, text=True)print(result.stdout)# Example 3: Running a command with shell=Truesubprocess.run('echo Hello from the shell', shell=True)# Example 4: Checking the return coderesult = subprocess.run(['ls', 'nonexistentfile'], capture_output=True)if result.returncode != 0:print('Command failed')# Example 5: Using subprocess.Popen for more controlprocess = subprocess.Popen(['ping', 'localhost'], stdout=subprocess.PIPE)while True:output = process.stdout.readline()if output == b'' and process.poll() is not None:breakif output:print(output.strip().decode())
পাইথনের সাথে সিস্টেম টাস্ক স্বয়ংক্রিয় করা
os.system এবং subprocess মডিউল ব্যবহার করে
import osimport subprocess# Example 1: Using os.system to run a commandos.system('echo This is a test')# Example 2: Running a command and capturing output with subprocessresult = subprocess.run(['date'], capture_output=True, text=True)print('Current date and time:', result.stdout)# Example 3: Executing multiple commandscommands = ['echo First command', 'echo Second command']for cmd in commands:os.system(cmd)# Example 4: Running a command with environment variablesenv = os.environ.copy()env['MY_VAR'] = 'Hello'subprocess.run('echo $MY_VAR', shell=True, env=env)# Example 5: Handling command errorstry:subprocess.check_output(['false_command'], stderr=subprocess.STDOUT)except subprocess.CalledProcessError as e:print('An error occurred:', e.output.decode())
সিস্টেম কমান্ড এক্সিকিউশনের জন্য উন্নত কৌশল
পাইথনে সিস্টেম কমান্ড কার্যকর করার আরেকটি দিক হল ব্যবহার করা শেল কমান্ড পার্সিং পরিচালনা করার জন্য মডিউল। এই মডিউলটি শেল কমান্ডগুলিকে একটি তালিকা বিন্যাসে বিভক্ত করার একটি উপায় প্রদান করে, যা পরে পাস করা যেতে পারে ফাংশন এটি নিশ্চিত করে যে স্পেস সহ আর্গুমেন্টগুলি সঠিকভাবে পরিচালনা করা হয়েছে। উপরন্তু, আপনি ব্যবহার করতে পারেন প্রমিত ইনপুট, আউটপুট এবং ত্রুটি স্ট্রীমগুলিকে প্যারেন্ট প্রসেসে নির্দেশিত করতে, আরও জটিল আন্ত-প্রক্রিয়া যোগাযোগের অনুমতি দেয়।
উদাহরণস্বরূপ, কমান্ড চেইন করা এবং তাদের আউটপুট ক্রমানুসারে প্রক্রিয়াকরণ একটি কমান্ডের আউটপুটকে অন্য কমান্ডে পাইপ করার মাধ্যমে অর্জন করা যেতে পারে . এটি আপনাকে একটি শেল স্ক্রিপ্টে যা করতে হবে তার অনুরূপ শক্তিশালী কমান্ড ক্রম তৈরি করতে দেয়। আপনিও ব্যবহার করতে পারেন একাধিক সাবপ্রসেস কমান্ড একসাথে চালানোর জন্য, আপনার স্ক্রিপ্টের কার্যকারিতা বৃদ্ধি করে, বিশেষ করে যখন I/O-বাউন্ড কাজগুলির সাথে ডিল করা হয়।
- আমি কিভাবে একটি শেল কমান্ড চালাতে পারি এবং পাইথনে এর আউটপুট পেতে পারি?
- ব্যবহার করুন সঙ্গে কমান্ডের আউটপুট ক্যাপচার করতে।
- পার্থক্য কি এবং ?
- একটি সহজ ইন্টারফেস যা কমান্ডটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করে অসিঙ্ক্রোনাস অপারেশনের অনুমতি দিয়ে কমান্ড এক্সিকিউশনের উপর আরো নিয়ন্ত্রণ দেয়।
- সিস্টেম কমান্ড চালানোর সময় আমি কীভাবে ত্রুটিগুলি পরিচালনা করব?
- ব্যবহার করুন এবং সঙ্গে ব্লক ভুল ধরতে এবং পরিচালনা করতে।
- আমি কি একটি কমান্ডে পরিবেশ ভেরিয়েবল পাস করতে পারি?
- হ্যাঁ, ব্যবহার করুন মধ্যে প্যারামিটার বা পরিবেশ ভেরিয়েবল পাস করতে।
- আমি কিভাবে ক্রমানুসারে একাধিক কমান্ড চালাব?
- ব্যবহার করুন বা সঙ্গে পাইপ ব্যবহার করে একটি লুপ বা চেইন কমান্ড .
- আমি কিভাবে একটি কমান্ড চালাতে পারি যার জন্য ব্যবহারকারীর ইনপুট প্রয়োজন?
- ব্যবহার করুন সঙ্গে এবং ব্যবহার করে প্রক্রিয়ার সাথে যোগাযোগ করুন .
- কি কাজে লাগে কমান্ড নির্বাহে?
- শেল কমান্ড সঠিকভাবে পার্স করতে সাহায্য করে, স্পেস সহ আর্গুমেন্টগুলি সঠিকভাবে পরিচালনা করা হয়েছে তা নিশ্চিত করে।
- আমি কিভাবে পটভূমিতে একটি কমান্ড চালাব?
- ব্যবহার করুন প্রক্রিয়া সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে, বা ব্যবহার করুন ব্যাকগ্রাউন্ড এক্সিকিউশন পরিচালনা করতে।
সিস্টেম কমান্ড এক্সিকিউশনের জন্য উন্নত কৌশল
পাইথনে সিস্টেম কমান্ড কার্যকর করার আরেকটি দিক হল ব্যবহার করা শেল কমান্ড পার্সিং পরিচালনা করার জন্য মডিউল। এই মডিউলটি শেল কমান্ডগুলিকে একটি তালিকা বিন্যাসে বিভক্ত করার একটি উপায় প্রদান করে, যা পরে পাস করা যেতে পারে ফাংশন এটি নিশ্চিত করে যে স্পেস সহ আর্গুমেন্টগুলি সঠিকভাবে পরিচালনা করা হয়েছে। উপরন্তু, আপনি ব্যবহার করতে পারেন প্রমিত ইনপুট, আউটপুট এবং ত্রুটি স্ট্রীমগুলিকে প্যারেন্ট প্রসেসে নির্দেশিত করতে, আরও জটিল আন্ত-প্রক্রিয়া যোগাযোগের অনুমতি দেয়।
উদাহরণস্বরূপ, কমান্ড চেইন করা এবং তাদের আউটপুট ক্রমানুসারে প্রক্রিয়াকরণ একটি কমান্ডের আউটপুটকে অন্য কমান্ডে পাইপ করার মাধ্যমে অর্জন করা যেতে পারে . এটি আপনাকে একটি শেল স্ক্রিপ্টে যা করতে হবে তার অনুরূপ শক্তিশালী কমান্ড ক্রম তৈরি করতে দেয়। আপনিও ব্যবহার করতে পারেন একাধিক সাবপ্রসেস কমান্ড একসাথে চালানোর জন্য, আপনার স্ক্রিপ্টের কার্যকারিতা বৃদ্ধি করে, বিশেষ করে যখন I/O-বাউন্ড কাজগুলির সাথে ডিল করা হয়।
পাইথনে বাহ্যিক কমান্ড কার্যকর করা একটি বহুমুখী এবং শক্তিশালী ক্ষমতা যা আপনার স্ক্রিপ্টিং এবং অটোমেশন কাজগুলিকে উল্লেখযোগ্যভাবে উন্নত করতে পারে। ব্যবহার করে মডিউল, আপনি শেল কমান্ড চালাতে পারেন, তাদের আউটপুট ক্যাপচার করতে পারেন এবং ত্রুটিগুলি কার্যকরভাবে পরিচালনা করতে পারেন। দ্য ফাংশন মৌলিক কমান্ড কার্যকর করার জন্য একটি সহজ বিকল্প প্রদান করে। উপরন্তু, অন্তর্ভুক্ত করা মডিউল জটিল শেল কমান্ডের সঠিক পার্সিং নিশ্চিত করে। এই কৌশলগুলি বোঝার ফলে আপনি আপনার অপারেটিং সিস্টেমের কমান্ড-লাইন সরঞ্জামগুলির সম্পূর্ণ সম্ভাবনাকে কাজে লাগানোর সময় পাইথনের শক্তিগুলিকে কাজে লাগাতে পারবেন৷