আমার প্রিয় টেকটিউনসের পাঠকরা , আশা করি ভাল আছেন । আজ বেশ কিছু দিন পর আমি আবার আপনাদের মাঝে হাজির হলাম পাইথন নিয়ে । বিভিন্ন কাজের কারণে এখন নিয়মিত লেখা হয় না । আজ আমরা পাইথন দ্বারা অপারেটিং সিস্টেমের উপর কীভাবে কাজ করতে হয় তা দেখব ।আজ আমি এক একটা কোড লিখব , ও তারপর এর মাহাত্ম বর্ণনা করব । তো আসুন , আজকের বিষয় গুলো জেনে নিওয়া যাক ।
আজকে আমরা OS নামক একটা মডিউল নিয়ে কাজ করব । এই মডিউলের কাজ হল অপারেটিং সিস্টেম সম্পর্কিত কাজগুলো করা । তাই সবসময় প্রথমে আমরা OS মডিউল টা ইমপোর্ট করে নেব ।
সর্ব প্রথমে নিচের কোড গুলো লিখুন । এর কাজ নিচের কোড গুলোর কাজ হল আপনি পাইথন IDLE তে কোন ডাইরেক্টরিতে কাজ করছেন সেটা বলে দেওয়া । মানে আপনার প্রোগ্রামটা কোথায় সেভ করা আছে সেটা ।
import os p = os.getcwd() print(p)
এখানে মূলত কোডটি হল p = os.getcwd() । এর মাধ্যমে আমরা একটি ভ্যারিয়েবল নিয়ে আমাদের কারেন্ট ওয়ার্কিং ডাইরেক্টরিরিটার্ণ করেছি । তারপর ভ্যারিয়েবলটা প্রিন্ট করে আমরা আমাদের কারেন্ট ওয়ার্কিং ডাইরেক্টরি টা দেখেছি ।
এরপর আবার নিচের কোডগুলি লিখুন । এই কোডগুলির কাজ হবে আপনি ধরুন একটা ডাইরেক্টরিতে একটা ফাইল খোজ করছেন । এখন সেই ফাইল সম্পর্কে বিস্তারিত তথ্য আপনকে জানাবে এই কোডগুলো ।
import os r = os.access("E:\Avast(Latest)\key.txt", os.F_OK) print("Is the file path exit? ", r) r = os.access("E:\Avast(Latest)\key.txt", os.R_OK) print("Is is readable ? ", r) r = os.access("E:\Avast(Latest)\key.txt", os.W_OK) print ("Is it writable? ", r) r = os.access("E:\Avast(Latest)\key.txt", os.X_OK) print ("is it executable ? ",r)
দেখুন , এখানে আমরা প্রথমে একটা ফাইল আছে কিনা তা পরীক্ষা করেছি r নামের একটা ভ্যারিয়েবল নিয়ে os.F_OK কোড টার মাধ্যমে । তারপর এটি আছে কি নেই তা প্রিন্ট করেছি । যদি ফাইলটা থাকে তবে এটি ট্রু রিটার্ণ করবে । আর না থাকলে ফলস রিটার্ণ করবে ।
তারপর , একই ভাবে আমরা os.R_OK ,, os.W_OK,,os.X_OK কোডগুলিণ দ্বারা ফাইলটি রিডেবল কিনা , রাইটেবল কিনা , ও এক্সিকিউটেবল কিনা , তা পরীক্ষা করেছি । হলে ট্রু , আর না হলে ফলস রিটার্ণ করেছে । এই দেখুন এই কোড এর ফলাফল :
Is the file path exit? True Is is readable ? True Is it writable? True is it executable ? True
এবার দেখুন , কীভাবে একটা ফাইলের ওয়ার্কিং ডাইরেক্টরি চেন্জ করতে হয় । সবাই নিচের কোডগুলি লিখুন ।
import os path = ("E:\Software\iCare Data Recovery Software 4.3 Full") r = os.getcwd() print ("Current working directory ", r) os.chdir( path ) r = os.getcwd() print ("Directory changed successfully", r)
দেখুন , এখানে আমরা প্রথমে path নারে একটা ভ্যারিয়েবল নিয়ে একটা ডাইরেক্টরি বলে দিয়েছি । তারপর আমরা আমাদের কারেন্ট ওয়ার্কিং ডাইরেক্টরি জেনেছি r = os.getcwd() দ্বারা । এবং আমরা আমাদের কারেন্ট ওয়ার্কিং ডাইরেক্টরি প্রিন্ট করেছি। তারপর os.chdir( path ) কোডটি দ্বারা আমরা আমাদের কারেন্ট ডাইরেক্টরি আমাদের উপরে দেখিয়ে দেওয়া Path এ ট্রান্সফার করেছি । তারপর আমরা আবারও আমাদের কারেন্ট ওয়ার্কিং ডাইরেক্টরি জেনেছি ও এটা আমাদের চেন্ঝ করা ডাইরেক্টরি টাই সো করেছে ।
এবার আমরা দেখব কীভাবে কোন ফাইল পড়তে হয় পাইথনের মাধ্যমে । আসুন আমরা সবাই নিচের কোডগুলো লিখি ।
import os f = os.open("E:\Avast(Latest)\key.txt",os.O_RDWR) r = os.read(f,27) print (r) os.close(f) print( "Closed the file successfully!!")
দেখুন , এখানে আমরা প্রথমে f ভ্যারিয়েবলের মাধ্যমে আমাদের কাঙ্খিত ফাইলটা ওপেন করেছি । এরপর আমরা os.read(f,12) এর মাধ্যমে এর ভিতর কী লেখা আছে তা পড়েছি ও তারপর সেটা প্রিন্ট করেছি । তারপর ফাইলটা ক্লোজ করে দিয়েছি । আমি এখানে (f,27) লিখেছি কারণ আমি ২৭ টি অক্ষর বা সংখ্যা পড়তে চাই । আপনি এ সংখ্যাটি পাল্টে নিজের মত করে নিতে পারেন আপনি যে কয়টি সংখ্যা পড়তে চান সে কয়টি ।
এরপর আসুন দেখে নিই কীভাবে একটা ফাইলের পরিসংখ্যান করতে হয় । সবাই নিচের কোডগুলো লিখুন ।
import os statinfo = os.stat(arindam.py') print(statinfo)
এই কোডটি আপনার ফাইলের পরিসংখ্যান সম্পর্কিত বিভিন্ন তথ্য দেখাবে । আসুন দেখে নিই কোন তথ্যের কী মানে ।
st_mode: protection bits. st_ino: inode number. st_dev: device. st_nlink: number of hard links. st_uid: user id of owner. st_gid: group id of owner. st_size: size of file, in bytes. st_atime: time of most recent access. st_mtime: time of most recent content modification. st_ctime: time of most recent metadata change.
এবার দেখুন কীভাবে একটা ফোল্ডারে কতগুলো ফাইল আছে তা কীভাবে দেখতে হয় ও কীভাবে ফাইলের রিনেম করতে হয় । সবাই নিচের কোডগুলো লিখুন :
import os f = os.listdir(os.getcwd()) print ("The dir is: ",f) os.rename("oldname","newname") print ("Successfully renamed.") print ("the dir is: ",os.listdir(os.getcwd()))
দেখুন , এখানে আমি প্রথমে আমাদের কারেন্ট ওয়ার্কিং ডাইরেক্টরিতে ফাইললিস্ট রিটার্ণ করেছি । তারপর সেটা প্রিন্ট করেছি । এরপর আমরা os.rename("oldname","newname") কোড দ্বারা আমারে পুরান ফাইল নেম পরিবর্তন করে নতুন নাম দিয়েছি । এখানে আপনারা যে ফাইলের নাম পরিবর্তন করতে চান ওল্ডফাইল নেম এর স্থলে সেই নাম , ও নিউ ফাইলসেম এর স্থলে নতুন নাম বসাবেন । এরপর আমরা আবার ডাইরেক্টরির সকল ফাইলের নাম প্রিন্ট করেছি print ("the dir is: ",os.listdir(os.getcwd())) কোড দ্বারা ।
এবার আমরা দেখব কীভাবে একটা ফাইল ডিলিট করতে হয় । এটা খুবই সিম্পল । সবাই নিচের কোডগুলি লিখুন ।
import os print ("The dir is: ",os.listdir(os.getcwd())) os.remove("aa.txt") print( "The dir after removal of path : ",os.listdir(os.getcwd()))
দেখুন , এখানে আমরা প্রথমে কারেন্ট ডাইরেক্টরির ফাইল গুলি প্রিন্ট করেছি print ("The dir is: ",os.listdir(os.getcwd())) কোড দ্বারা । এরপর তাদের মধ্যে aa.txt নামের একটা ফাইল আমরা রিমুভ করেছি উপোরোক্ত কোড দ্বারা । তারপর সেই ফাইল রিমুভ হয়েছে কিনা সেটা সিওর হবার জন্য আমরা আবারও ডাইরেক্টরির ফাইলগুলি প্রিন্ট করে দেখেছে । আপনারা কারেন্ট ডাইরেক্টরির ফাইল প্রিন্ট না করে ডাইরেক্টলি ফাইল প্যাথ বনিয়ে ফাইল ডিলিট করতেও পারেন ।
এবার আমরা দেখব পাইথনে OS মডিউল দিয়ে কীভাবে ফাইল নিয়ে কত প্রকার কাজ করা যায় । আসুন আমরা দেখে নিই । সবাই নিচের কোডটি লিখুন ।
import os fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT ) os.write(fd, "This is test") os.close( fd ) print ("Closed the file successfully!!")
দেখুন , এখান এ আমরা ফাইল ওপেন করেছি ও সেই ফাইলে কিছু লিখেছি । এখন আপনাদের জানতে হবে এই foo.txt এর পরের অংশটুকু কত প্রকার ও কী কী হতে পারে । মানে আমরা ফাইল নিয়ে কত প্রকার কাজ করতে পারি । এগুলো হল ফাইল হ্যান্ডেলিং এর বিভিন্ন মুড । সবাই নিচে থেকে এগুলো দেখে নিন । এখানে আমরা ফাইলটি পড়া ও লেখা উভয় কাজের জন্য
ওপেন করেছি । আরও কতভাবে ওপেন করা যায় তা দেখুন ।
os.O_RDONLY : open for reading only os.O_WRONLY : open for writing only os.O_RDWR : open for reading and writing os.O_NONBLOCK : do not block on open os.O_APPEND : append on each write os.O_CREAT : create file if it does not exist os.O_TRUNC : truncate size to 0 os.O_EXC L: error if create and file exists os.O_SHLOCK : atomically obtain a shared lock os.O_EXLOCK : atomically obtain an exclusive lock os.O_DIRECT: eliminate or reduce cache effects os.O_FSYNC : synchronous writes os.O_NOFOLLOW : do not follow symlinks
আজ আর লিখে পারছি না । এগুলো ছাড়াও এই মডিউলের আন্ডারে অনেক কিছু আছে । তবে , এইগুলো আপনাদের কাজে লাগতে পারে বলে আমি শুধু এই গুলোই শেয়ার করলাম । আর বাকী গুলো একটু কষ্ট করে দেখে নিবেন গুগল বা অন্য কোথাও সার্চ দিয়ে ।
কিছুদিন আগে ফেসবুকে একজন আমাকে জিজ্ঞাসা করেছিলেন যে > পাইথনের জন্য কোন কম্পাইলার আছে কিনা । আসলে আমার পাইথনের কোন কম্পাইলরের কথা জানা নেই । তবে পাইথন ২.৭ পর্যন্ত যেকোন প্রোগ্রামকে .exe তে মাইগ্রেট করা যায় py2exe নামক একটা সফটওয়ার দিয়ে । আর পাইথনের IDLE ই হল পাইথনের জন্য কম্পাইলর । আপনার py2exe ইউজ করতে হলে পাইথন ২.৭ এর উপর একটু ধারণা রাখতে হবে ।কারণ এটার সর্বশেষ রিলিজ হল পাইথন ২.৭ এর জন্য । এটা এখান থেকে ডাউনলোড করতে পারেন । আর আশা করছি পাইথন ৩.৩ এর জন্যও py2exe এর ভার্সন খুবই দ্রুত বের হবে । আর যদি কেউ ট্রাই করতে চান অন্যভাবে , তাহলে গুগলে সার্চ দিয়ে দেখতে পারেন । আরেকটা সফটওয়ার আমার জানা আছে যেটার নাম হল CYTHON । এটা এখান থেকে ডাউনলোড করতে পারেন ।
এখন কিছু অফটপিক কথা বলি । আসলে একটা প্রোগ্রামিং ল্যাংগুয়েজ নিয়ে লিখে শেষ করা সম্ভব নয় । কারণ , এর এত দিক, এত রিসোর্স রয়েছে যে কিছু না কিছু বাদ থেকেই যাবে । আর প্রতিটা প্রোগ্রামিং ল্যাংগুয়েজ নিয়মিত আপডেট হয় । তবে, যেকোন একটা ভার্সন সম্পর্কে ভাল ধারণা থাকলেই অন্যান্য গুলো বুঝে নেওয়া যায় । আর আমি আসলে ভাল কোন প্রোগ্রামার নই । কারণ , ভাল প্রোগ্রামার হলে আমি এখন টেকটিউনসে বসে টিউটোরিয়াল লেখার বদলে অন্য কিছু করতাম । আসলে প্রোগ্রামিং এর উপর দক্ষতা নির্ভর করে প্রাকটিসের উপর । আর এই বিষয়টা আমার পুরাই অফ থাকে । পাইথনের "প" টুকু যদি আমি জানতে পারতাম তাহলে আমার জীবন সার্থক হয়ে যেত । আমি আশা করি আপনারা আমার মত অকাজের প্রোগ্রামার হবেন না । একটু কষ্ট করে ডেইলি প্রাকটিস করবেন ।এখন নিয়মিত লেখার সুযোগ পাই না । তবে হাতে সময় পেলেই লিখতে চেষ্টা করি । আবার কবে লিখতে পারব তা বলতে পারছি না । আপনারা গুগলে সার্চ দিলে ইংলিশ এ পাইথনের উপর বহু লেখা পাবেন । সেগুলো দেখে একটু শিখতে চেষ্টা করুন । আর এসব শিখতে হলে ইংরেজী পড়ার অভ্যাস টা একটু গড়ে তুলতে হবে । কারণ ,যেকোন বিষয়ে যতই এডভান্স লেভেলে যাবেন , ততই দেখবেন বাংলায় আর কোন লেখা নেই । তাই ইংলিশ পড়ে বোঝার চেষ্টা করুন । তাতে আপনার ইংলিশ স্কিল ডেভলপও করবে ।
সবাই ভাল থাকবেন । আশা করি আবার দেখা হবে । ধন্যবাদ ।
আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 81 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 20 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...
পাইথন প্রোগ্রামিং এর মাধ্যেমে কিভাবে web scraping করা যায়, যদি এর উপরে একটি টিউটোরিয়াল লিখতেন তাহলে অনেক উপকৃত হতাম। ধন্যবাদ আপনার মূল্যবান টিউন এর জন্য।