os মডিউল

os মডিউল

পাইথন স্ট্যান্ডার্ড লাইব্রেরির খুব বিখ্যাত একটি মডিউল হলো অপারেটিং সিস্টেম(OS) মডিউল। সচরাচর এর ব্যবহার খুব বেশি। মূলত অপারেটিং সিস্টেমনির্ভর ফাংশনালিটির জন্য এটাকে ব্যবহার করা হয়। আমরা এবার এর কিছু ফাংশন সম্পর্কে জানব ও তাদের ব্যবহার করব।

os.getcwd()

এই ফাংশন কারেন্ট ওয়ার্কিং ডিরেক্টরি রিটার্ন করে। অর্থাৎ বর্তমানে আমাদের স্ক্রিপ্ট যে ডিরেক্টরিতে আছে, সেটা পাওয়া যায়।

>>> import os
>>> os.getcwd()
'/home/maateen'

os.chdir()

এই ফাংশন দিয়ে ডিরেক্টরি চেঞ্জ করা হয়। এটা অনেকটা ইউনিক্স কমান্ড cd-এর সমতুল্য। আমরা কারেন্ট ওয়ার্কিং ডিরেক্টরি পরিবর্তন করে অন্য কোনো ডিরেক্টরিতে যেতে চাইলে এই ফাংশনের মধ্যে সেই ডিরেক্টরির পাথ পাস করব। যেমন:

>>> import os
>>> os.getcwd()
'/home/maateen'
>>> os.chdir('/home/maateen/Desktop')
>>> os.getcwd()
'/home/maateen/Desktop'

os.mkdir()

এই ফাংশনটি লিনাক্সের mkdir কমান্ডের সমতুল্য। যখন কোনো ডিরেক্টরি (ডিরেক্টরি - এভাবেও পড়া যায়) বা ফোল্ডার তৈরি করার দরকার পড়ে তখন এই ফাংশন ব্যবহার করা হয়। যে ফোল্ডার তৈরি করা হবে সেটার পাথটা শুধু পাস করতে হয়। যেমন :

>>> os.getcwd()
'/home/maateen/Desktop'
>>> os.mkdir('new_folder')

এখন আমি /home/maateen/Desktop ডিরেক্টরিতে গেলে দেখতে পাব সেখানে new_folder নামে নতুন একটা ফোল্ডার তৈরি হয়ে গেছে।

os.makedirs()

এই ফাংশনটা লিনাক্সের mkdir –p কমান্ডের সমতুল্য। আমরা আগে একটা উদাহরণ দেখব। তারপর ব্যাখ্যায় যাব।

>>> os.getcwd()
'/home/maateen/Desktop'
>>> os.makedirs('1/2/3/4/5')

এখন আমি যদি আমার /home/maateen/Desktop ফোল্ডারে যাই তাহলে দেখব, সেখানে 1 নামে একটি ফোল্ডার আছে, 1-এর মধ্যে 2 নামে একটি ফোল্ডার, 2-এর মধ্যে আছে 3 নামে একটি ফোল্ডার, 3-এর মধ্যে আছে 4 নামে একটি ফোল্ডার এবং 4-এর মধ্যে আছে 5 নামে একটি ফোল্ডার। আসলে আমাদের এখানে দরকার ছিল 5 নামে যে ফোল্ডারটি সেটি তৈরি করা। কিন্তু 5 নামের ফোল্ডারটা আরও কয়েকটা ফোল্ডারের মধ্যে থাকবে, যা ইতিমধ্যে তৈরি করা নেই। সেগুলো আমরা একটা একটা করে তৈরি না করে এই পদ্ধতিতে এক ধাক্কায় কিন্তু পগার পার করে ফেললাম।

os.remove()

এই ফাংশনটি লিনাক্সের rm কমান্ডের সমতুল্য। যখন কোনো একটা ফাইল ডিলিট করার দরকার পড়বে, তখন আমরা এই ফাংশন ব্যবহার করব।

>>> os.getcwd()
'/home/maateen/Desktop'
>>> os.remove('test.log')

আমার কারেন্ট ওয়ার্কিং ডিরেক্টরি থেকে test.log ফাইলটা রিমুভ করলাম।

os.rmdir()

এই ফাংশনটা লিনাক্সের rm –r কমান্ডের সমতুল্য। যখন কোনো একটা ফোল্ডার ডিলিট করার দরকার পড়বে আমাদের তখন আমরা এই ফাংশন ব্যবহার করব।

>>> os.getcwd()
'/home/maateen/Desktop'
>>> os.rmdir('test')

আমার কারেন্ট ওয়ার্কিং ডিরেক্টরি থেকে test ফোল্ডারটা রিমুভ করলাম।

os.rename()

একটা ফাইল বা ফোল্ডারকে রিনেম করার জন্য এই ফাংশন ব্যবহার করা হয়। উদাহরণ দেখা যাক:

>>> os.getcwd()
'/home/maateen/Desktop'
>>> os.rename('test.log', 'test.txt')

আমার কারেন্ট ওয়ার্কিং ডিরেক্টরির test.log ফাইলটাকে test.txt নামে রিনেম করলাম। os.rename () ফাংশনের মধ্যে প্রথম প্যারামিটার হিসেবে দিতে হয় সোর্স ফাইল বা ফোল্ডার আর দ্বিতীয় প্যারামিটার হিসেবে দিতে হয় যে নতুন নামে আমরা সেটাকে দেখতে চাই তার নাম।

os.path

অপারেটিং সিস্টেম পাথ হলো অপারেটিং সিস্টেম মডিউলের একটা সাব-মডিউল। আমরা এখন এই সাব-মডিউলের কয়েকটি ফাংশন সম্পর্কে জানব।

os.path.basename()

এই ফাংশনের মধ্যে একটি পাথ পাস করা হলে সেটি শুধু ফাইলের নামটি রিটার্ন করবে।

>>> os.path.basename('/home/maateen/Desktop/test.py')
'test.py'

os.path.dirname()

এই ফাংশনের মধ্যে একটা পাথ পাস করা হলে পাথের ডিরেক্টরি অংশটুকু রিটার্ন করবে।

>>> os.path.dirname('/home/maateen/Desktop/test.py')
'/home/maateen/Desktop'

os.path.exists()

একটা ফাইল বা ফোল্ডার এক্সিস্ট করে কি না, তা চেক করে True বা False রিটার্ন করে।

>>> os.path.exists('/home/maateen/Desktop/test.py')
True
>>> os.path.exists('/home/maateen/Desktop')
True

os.path.isdir()

একটি ডিরেক্টরি এক্সিস্ট করে কি না, তা চেক করে True বা False রিটার্ন করে।

>>> os.path.isdir('/home/maateen/Desktop')
True

os.path.isfile()

একটা ফাইল এক্সিস্ট করে কি না, তা চেক করে True বা False রিটার্ন করে।

>>> os.path.isfile('/home/maateen/Desktop/test.py')
True

os.path.join()

এটা হলো জোড়াতালি লাগানোর ফাংশন। একটি ডিরেক্টরি পাথের সাথে ফাইলের নাম জোড়া দেওয়ার জন্য আমরা এই ফাংশনটি ব্যবহার করতে পারি। বোঝাই যাচ্ছে এই ফাংশনটি দুটি প্যারামিটার নিয়ে কাজ করে। প্রথম প্যারামিটার হলো ডিরেক্টরির পাথ এবং দ্বিতীয় প্যারামিটার হলো ফাইলের নাম।

>>> dir = os.getcwd()
>>> print(dir)
/home/maateen/Desktop
>>> os.path.join(dir, 'test.py')
'/home/maateen/Desktop/test.py'

os.path.split()

os.path.join () ফাংশনের সম্পূর্ণ বিপরীত ফাংশন হলো এটি। একটি ফাইলের ফুল পাথকে ভেঙে দুই টুকরা করতে এই ফাংশন ব্যবহৃত হয়। প্যরামিটার হিসেবে পাথ পাস করলে ফাংশনটি ডিরেক্টরি পাথ ও ফাইলের নাম টাপল হিসেবে রিটার্ন করে।

>>> os.path.split('/home/maateen/Desktop/test.py')
('/home/maateen/Desktop', 'test.py')

os.system()

খুবই দরকারি একটা ফাংশন। কখনো কখনো পাইথন দিয়ে কোনো লিনাক্স বা উইন্ডোজ কমান্ড চালানো দরকার হতে পারে আমাদের। তখন আমরা এই ফাংশনটা ব্যবহার করব।

>>> os.system('uname -r')
4.4.0-49-generic
0

লিনাক্সে uname –r কমান্ড দিয়ে আমরা বর্তমান কার্নেলের ভার্সন দেখতে পারি। ঠিক একই কাজটি আমরা একটু ঘুরিয়ে করলাম।

আমাদের একটি ব্যাপার জানা দরকার। এতক্ষণ আমরা যেসব উদাহরণ দেখলাম, সেখানে পাথ দেখানো হয়েছে লিনাক্সের সাপেক্ষে। লিনাক্সে পাথ সেপারেটর হিসেবে ব্যবহার করা হয় স্লাশ চিহ্ন (/) কিন্তু উইন্ডোজে হয় ব্যাকস্লাশ (), যেমন— C:\Users\maateen\Documents\test.py

এই চ্যাপ্টারে আমরা সচরাচর ব্যবহৃত হওয়া অপারেটিং সিস্টেম(os) মডিউলের এ রকম ফাংশনগুলোই কেবল দেখেছি। এই চ্যাপ্টারে os.popen() ও os.spawn*() ফাংশনগুলো নিয়ে আমরা আলোচনা করলাম না। কারণ, নতুন প্রসেস চালু করার জন্য বা আউটপুট ক্যাপচার করার জন্য অথবা রিটার্নকোড ক্যাচ করার জন্য subprocess মডিউল আরও ভালো ফ্যাসিলিটি দেয়। তাই এসব কাজের জন্য subprocess মডিউল চ্যাপ্টারে আমরা বিস্তারিত আলোচনা করব। তবে os মডিউল সম্পর্কে আরও জানতে পাইথনের অফিশিয়াল ডকুমেন্টেশনে ঘুরে আসতে পারেন - (https://docs.python.org/3/library/os.html)।

comments powered by Disqus