সমাধান করা হয়েছে: সিস্টেম কমান্ড চালান

সর্বশেষ আপডেট: 09/11/2023

আজকের দ্রুত-গতির বিশ্বে, বক্ররেখা থেকে এগিয়ে থাকার জন্য অটোমেশন এবং দক্ষতা চাবিকাঠি। এরকম একটি ক্ষেত্র যেখানে অটোমেশন একটি গুরুত্বপূর্ণ ভূমিকা পালন করে তা হল পাইথনের মতো প্রোগ্রামিং ভাষার মাধ্যমে সিস্টেম কমান্ড চালানো। এই নিবন্ধটি আপনাকে পাইথন ব্যবহার করে সিস্টেম কমান্ড চালানোর প্রক্রিয়া, অন্তর্নিহিত কোডে ডাইভিং এবং প্রাসঙ্গিক লাইব্রেরি এবং ফাংশনগুলির উপর আলোকপাত করার প্রক্রিয়ার মাধ্যমে গাইড করবে।

শুরু করার জন্য, পাইথন সিস্টেম কমান্ডগুলি চালানোর কয়েকটি উপায় অফার করে। একটি জনপ্রিয় বিকল্প ব্যবহার করা হয় os লাইব্রেরি, যখন অন্য দক্ষ পছন্দ অন্তর্ভুক্ত উপপ্রসেস মডিউল এই নিবন্ধে, আমরা ফোকাস করা হবে উপপ্রসেস মডিউল, কারণ এটি বহিরাগত কমান্ডের সঞ্চালনের উপর আরো নমনীয়তা এবং নিয়ন্ত্রণ প্রদান করে।

পাইথনের সাবপ্রসেস মডিউল

  • পাইথনের সাবপ্রসেস মডিউল আপনাকে নতুন প্রসেস তৈরি করতে, তাদের ইনপুট/আউটপুট/এরর পাইপের সাথে সংযোগ করতে এবং তাদের রিটার্ন কোডগুলি পেতে দেয়।
  • সাবপ্রসেস মডিউল দিয়ে শুরু করতে, আপনাকে প্রথমে নিম্নলিখিত কমান্ড দিয়ে এটি আমদানি করতে হবে: import subprocess.

এখন যেহেতু আমরা সাবপ্রসেস মডিউলটি আমদানি করেছি, আসুন এর প্রাথমিক ফাংশনটি অন্বেষণ করি: চালান (). এই ফাংশনটি বিভিন্ন ধরনের আর্গুমেন্ট নেয়, যার মধ্যে সবচেয়ে মৌলিক হল একটি তালিকা যাতে আপনি যে কমান্ডটি চালাতে চান এবং যেকোন অতিরিক্ত আর্গুমেন্টের প্রয়োজন হয়।

সাবপ্রসেস সহ সিস্টেম কমান্ড চালানো

এর একটি উদাহরণ মাধ্যমে হাঁটা যাক. আপনি যদি সিস্টেম কমান্ড "mkdir" ব্যবহার করে "example_directory" নামে একটি নতুন ডিরেক্টরি তৈরি করতে চান, তাহলে আপনি নিম্নলিখিত কোডটি চালাবেন:

import subprocess

command = ["mkdir", "example_directory"]
result = subprocess.run(command)

এই উদাহরণে, চালান () ফাংশন তালিকা গ্রহণ করে হুকুম, যেটিতে সিস্টেম কমান্ড "mkdir" এবং পছন্দসই ডিরেক্টরি নামের জন্য আর্গুমেন্ট রয়েছে। ফাংশন তারপর a প্রদান করে subprocess.CompletedProcess অবজেক্ট, রিটার্ন কোড এবং কমান্ড দ্বারা উত্পন্ন কোনো আউটপুট বা ত্রুটি বার্তার মতো তথ্য রয়েছে।

সম্পাদিত কমান্ডের উপর আরো নিয়ন্ত্রণের জন্য, অতিরিক্ত আর্গুমেন্ট পাস করা যেতে পারে চালান () ফাংশন, যেমন stdout এবং stderr. ডিফল্টরূপে, এই সেট করা হয় না, মানে আউটপুট এবং ত্রুটি বার্তা ক্যাপচার করা হয় না। যাইহোক, তাদের সেট করা subprocess.PIPE আপনাকে আরও প্রক্রিয়াকরণের জন্য এই বার্তাগুলি ক্যাপচার করতে দেয়।

import subprocess

command = ["mkdir", "example_directory"]
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print(f"Output: {result.stdout}")
print(f"Error: {result.stderr}")
print(f"Return Code: {result.returncode}")

সাবপ্রসেস মডিউলে দরকারী ফাংশন

ছাড়াও চালান () ফাংশন, সাবপ্রসেস মডিউলটিতে আরও কয়েকটি সহায়ক ফাংশন রয়েছে, যার মধ্যে রয়েছে:

  • কল (): এই ফাংশন অনুরূপ কাজ করে চালান (), কিন্তু শুধুমাত্র সম্পাদিত কমান্ডের রিটার্ন কোড প্রদান করে।
  • চেক_কল(): অনুরূপ, একই, সমতুল্য কল (), এই ফাংশনটি একটি CalledProcessError ব্যতিক্রম নিক্ষেপ করে যদি কমান্ডটি একটি নন-জিরো এক্সিট কোড প্রদান করে।
  • চেক_আউটপুট(): এই ফাংশন কমান্ডের আউটপুট প্রদান করে, কিন্তু একটি CalledProcessError ব্যতিক্রম ছুঁড়ে দেয় যদি কমান্ডটি একটি নন-জিরো এক্সিট কোড প্রদান করে।
  • পোপেন(): এই শ্রেণীটি আরও উন্নত কার্যকারিতা প্রদান করে, যার মধ্যে এটির ইনপুট, আউটপুট এবং ত্রুটি স্ট্রীমের মাধ্যমে সম্পাদিত প্রক্রিয়ার সাথে ইন্টারঅ্যাক্ট করার ক্ষমতা রয়েছে।

সিস্টেম কমান্ড চালানোর জন্য অন্যান্য লাইব্রেরি

ব্যতীত উপপ্রসেস মডিউল, পাইথনে সিস্টেম কমান্ড চালানোর জন্য অন্যান্য লাইব্রেরি উপলব্ধ রয়েছে:

  • os: OS মডিউল যেমন ফাংশন ব্যবহার করে সিস্টেম কমান্ড চালানোর একটি উপায় প্রদান করে os.system() এবং os.popen(), কিন্তু সাবপ্রসেস মডিউলের তুলনায় কম নমনীয়তা এবং নিয়ন্ত্রণ সহ।
  • sh: এই থার্ড-পার্টি লাইব্রেরি কমান্ড লাইন টুলের সাথে সহজে মিথস্ক্রিয়া করার অনুমতি দিয়ে সিস্টেম কমান্ড নির্বাহ করার জন্য আরও পাইথনিক পদ্ধতির প্রস্তাব করে।

উপসংহারে, পাইথনে সিস্টেম কমান্ড চালানো অটোমেশন এবং দক্ষতার জন্য একটি গুরুত্বপূর্ণ দক্ষতা। দ্য উপপ্রসেস মডিউলটি সবচেয়ে বহুমুখী এবং শক্তিশালী বিকল্প হিসাবে দাঁড়িয়েছে, যা ব্যবহারকারীদের বহিরাগত কমান্ডগুলি সম্পাদন এবং নিয়ন্ত্রণ করার জন্য অনেকগুলি বিকল্প প্রদান করে। এই বোঝার সাথে, আপনি এখন আপনার প্রক্রিয়াগুলিকে স্ট্রিমলাইন করতে এবং আপনার উত্পাদনশীলতা বাড়াতে পাইথনের শক্তি ব্যবহার করতে পারেন।

সম্পর্কিত পোস্ট:

মতামত দিন