কম্পিউটার টিউটোরিয়াল

পাইথনে অবজেক্ট-ওরিয়েন্টেড ফাইলসিস্টেম পাথ (pathlib মডিউল)

pathlib মডিউল ফাইলসিস্টেম পাথ হ্যান্ডল করার জন্য অবজেক্ট-ওরিয়েন্টেড পদ্ধতি প্রদান করে। মডিউলটি ভিন্ন অপারেটিং সিস্টেমের জন্য উপযুক্ত কার্যকারিতাও দেয়। এই মডিউলে সংজ্ঞায়িত ক্লাসগুলো দুটি টাইপের: pure path টাইপ এবং concrete path টাইপ। Pure paths শুধু কম্পিউটেশনাল অপারেশন করতে পারে, concrete paths I/O অপারেশনও করতে পারে।

pathlib মডিউল নিচের ক্লাসগুলো সংজ্ঞায়িত করে:

ক্র.নং মডিউল ও বর্ণনা
1 PurePath
সকল অন্যান্য ক্লাসের বেস ক্লাস।
2 Path
PurePath থেকে সাবক্লাস্ড। এটি একটি কনক্রিট ক্লাস যা ফাইলসিস্টেম পাথ রিপ্রেজেন্ট করে।
3 PosixPath
নন-উইন্ডোজ OS-এর জন্য Path সাবক্লাস।
4 WindowsPath
উইন্ডোজ সিস্টেমের জন্য Path সাবক্লাস।
5 PurePosixPath
নন-উইন্ডোজ সিস্টেমের জন্য PurePath সাবক্লাস।
6 PureWindowsPath
উইন্ডোজ সিস্টেমের জন্য PurePath সাবক্লাস।

Path ক্লাসের ইনস্ট্যান্স তৈরি করলে, আপনার সিস্টেম অনুযায়ী এটি অটোমেটিক্যালি WindowsPath বা PosixPath ফেরত দেবে।

লক্ষ্য করুন WindowsPath বা PosixPath অবজেক্ট সরাসরি তৈরি করা যায়, কিন্তু একই টাইপের সিস্টেমে।

Path অবজেক্ট তৈরির সিনট্যাক্স:

>>> from pathlib import *
>>> p = Path(".")
>>> type(p)
<class 'pathlib.WindowsPath'>

উইন্ডোজ সিস্টেমে এক্সিকিউট হওয়ায় WindowsPath অবজেক্ট তৈরি হয়েছে। "." বর্তমান ডিরেক্টরি বোঝায়।

Path ক্লাসে নিচের মেথডগুলো সংজ্ঞায়িত:

absolute() − Path অবজেক্টের অ্যাবসোলিউট ভার্সন ফেরত দেয়।

>>> p.absolute()
WindowsPath('C:/python36')

exists() − দেওয়া পাথ অস্তিত্ব থাকলে true ফেরত দেয়।

>>> p = Path("mydir")
>>> p.exists()
False
>>> p = Path("etc")
>>> p.exists()
True

is_dir() − পাথ ডিরেক্টরি হলে true ফেরত দেয়।

>>> p = Path("etc")
>>> p.is_dir()
True
>>> p = Path("test.py")
>>> p.is_dir()
False

is_file() − পাথ ফাইল হলে true ফেরত দেয়।

>>> p = Path("tmp.py")
>>> p.is_file()
True
>>> p = Path("etc")
>>> p.is_file()
False

iterdir() − পাথ соответствующий ডিরেক্টরির ফাইলনেম দিয়ে একটি জেনারেটর ফেরত দেয়।

>>> p = Path("libs")
>>> for f in p.iterdir():
...     print(f)
libs\libpython36.a
libs\python3.lib
libs\python36.lib
libs\_tkinter.lib

mkdir() − পাথ দ্বারা রিপ্রেজেন্ট করা নতুন ডিরেক্টরি তৈরি করে যদি আগে থেকে না থাকে।

>>> p = Path("mydir")
>>> p.mkdir()
>>> p.absolute()
WindowsPath('C:/python36/mydir')
>>> p = Path("codes")
>>> p.mkdir()
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'codes'

open() − Path অবজেক্ট দ্বারা রিপ্রেজেন্ট করা ফাইল খুলে ফাইল অবজেক্ট ফেরত দেয়। এটি বিল্ট-ইন open() ফাংশনের সদৃশ।

>>> p = Path("Hello.py")
>>> f = p.open()
>>> f.readline()
'Hello Python'

read_bytes() − ফাইলটি বাইনারি মোডে খুলে, বাইনারি ফর্মে ডেটা পড়ে এবং বন্ধ করে।

>>> p = Path("Hello.py")
>>> f.read_bytes()
>>> p.read_bytes()
b'Hello Python'

read_text() − ফাইলটি টেক্সট মোডে খুলে টেক্সট পড়ে এবং পরে বন্ধ করে।

>>> p = Path("Hello.py")
>>> p.read_text()
'Hello Python'

write_text() − ফাইল খুলে, টেক্সট লিখে এবং বন্ধ করে।

>>> p = Path("Hello.py")
>>> p.write_text("Hello how are you?")
18

write_bytes() − ফাইলে বাইনারি ডেটা লিখে এবং বন্ধ করে।

>>> p = Path("Hello.py")
>>> p.write_bytes(b'I am fine')
9

stat() − এই পাথ সম্পর্কে ইনফরমেশন ফেরত দেয়।

>>> p.stat()
os.stat_result(st_mode=16895, st_ino=9570149208167477, st_dev=1526259762, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1543085915, st_mtime=1543085915, st_ctime=1543085915)

rmdir() − Path অবজেক্ট correspondiente ডিরেক্টরি মুছে ফেলে।

>>> p = Path("mydir")
>>> p.rmdir()

Path.cwd() − এটি Path ক্লাসের একটি ক্লাসমেথড। বর্তমান ওয়ার্কিং ডিরেক্টরির পাথ ফেরত দেয়।

>>> Path.cwd()
WindowsPath('C:/python36')

Path.home() − এটি Path ক্লাসের একটি ক্লাসমেথড। হোম ডিরেক্টরির পাথ ফেরত দেয়।

>>> Path.home()
WindowsPath('C:/Users/acer')

পাথ তৈরির জন্য '/' অপারেটর ব্যবহার করা হয়।

>>> p = Path(".")
>>> p1 = p / 'codes'
>>> p1.absolute()
WindowsPath('C:/python36/codes')

এই আর্টিকেলে আমরা pathlib মডিউলে সংজ্ঞায়িত ফাইলসিস্টেম অবজেক্টের অবজেক্ট-ওরিয়েন্টেড API শিখলাম।

  1. পাইথনে রুট-টু-লিফ পাথে ইনসাফিশিয়েন্ট নোড রিমুভ করা

  2. পাইথনে বাইনারি ট্রিতে পাথ সাম (Path Sum)

  3. মিন কস্ট পাথের পাইথন প্রোগ্রাম

  4. Python-এ Path কীভাবে অ্যাড করবেন?