মজার ও সহজ প্রোগ্রামিং, পাইথন প্রোগ্রামিং [পর্ব-২০] :: পাইথনে একটা খুবই সিম্পল টেক্সট এডিটর বা ফোনবুক বা দোকানের হিসাব রাখার প্রোগ্রাম তৈরী করা

মজার ও সহজ পাইথন প্রোগ্রামিং

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

যাই হোক , আসুন প্রথমে এই টেক্সট এডিটরটার কোড দেখে নিই :

def print_text(texts):
    print("Texts to show:")
    for k,v in texts.items():
        print("Name:",k, "\tText:",v)
        print()
def add_texts(texts,name,text):
    texts[name] =text
def lookup_texts(texts,name):
    if name in texts:
        return "The text is "+ texts[name]
    else:
        return name + " was not found"
def remove_texts(texts,name):
    if name in texts:
        del  texts[name]
    else:
        print(name," was not found")
def load_texts(texts,filename):
    in_file = open(filename, "rt")
    while True:
        in_line =in_file.readline()
        if not in_line:
            break
        in_line =in_line[:-1]
        name,text =in_line.split(",")
        texts[name] =text
    in_file.close()
def save_texts(texts,filename):
    out_file = open(filename, "wt")
    for k,v in texts.items():
        out_file.write(k + ","+ v + "\n")
    out_file.close()
def print_menu():
    print('1. Print texts')
    print('2. Add a texts')
    print('3. Remove a texts')
    print('4. Lookup a texts')
    print('5. Load texts')
    print('6. Save texts')
    print('7. Quit')
    print()
texts_list ={}
menu_choice = 0
print_menu()
while True:
    menu_choice = int(input("Type in a number (1-7): "))
    if menu_choice == 1:
        print_texts(texts_list)
    elif menu_choice == 2:
        print("Add Name and texts")
        name = input("Name: ")
        texts = input("texts: ")
        add_texts(texts_list,name,texts)
    elif menu_choice == 3:
        print("Remove Name and texts")
        name = input("Name: ")
        remove_texts(texts_list,name)
    elif menu_choice == 4:
        print("Lookup texts")
        name = input("Name: ")
        print(lookup_texts(texts_list,name))
    elif menu_choice == 5:
        filename = input("Filename to load: ")
        load_texts(texts_list,filename)
    elif menu_choice == 6:
        filename = input("Filename to save: ")
        save_texts(texts_list,filename)
    elif menu_choice == 7:
       break
    else:
        print_menu()
print("Goodbye")

ভাল করে খেয়াল করে দেখুন , এখানে প্রোগ্রামের পার্ট মূলত ২ টি । একটা হল প্রয়োজনীয় ফাংশন তৈরী করা এবং আর একটা হল ফাংশন গুলোকে সঠিকভাবে কাজে ব্যাবহার করা । তো প্রথমে আসুন দেখে নিই আমরা কী কী ফাংশন তৈরী করেছি ।
১. প্রথম ফাংশনটা হল কোন ফাইল থেকে টেক্সট পড়ার জন্য । এখানে আমরা ২ টি ভ্যারিয়েবল নিয়ে একটা ফর লুপ ইউজ করেছি কোন ফাইলের টেক্সট পড়ার জন্য । তারপর আমরা সেই টেক্সট প্রিন্ট করার জন্য একটা প্রিন্ট ফাংশন ইউজ করেছি ।
২.তারপর আমরা এড টেক্সট নামের একটা ফাংশন তৈরী করে তার মধ্যে ৩ টা ভ্যারিয়েবল নিয়েছি । এরপর texts,name নামের ভ্যারিয়েবল ২ টিকে text নামের ভ্যারিয়েবল এর মধ্যে এড করেছি ।
৩. তারপর আমরা টেক্সট লুকআপ নামের একটা ফাংশন তৈরী করেছি ইনপুট নেওয়া টেক্সট আদেও ফাইলের মধ্যে আছে কিনা তা দেখার জন্য । যদি থাকে তবে সেটা সো করবে । আর না থাকলে টেক্সট was not found লেখাটি সো করবে ।
৪.তারপর আমরা রিমুভ টেক্সট নামের একটা ফাংশন তৈরী করে ব্যাবহার কারী যদি কোন ফাইল ডিলিট করতে চায় তবে সেটা ইনপুট নেবার পর সেটা ডিলিট করার জন্য একটা del ফাংশন ইউজ করেছি ।
৫.তারপর আমরা কোন টেক্সট ফাইল পড়াড় জন্য এটা রিড মুডে নিয়েছি । তারপর আমরা চেক করেছি যে টেক্স তার মধ্যে আছে কিনা । না থাকলে সেখানেই অপারেশন শেষ । আর থাকলে এই কোডগুলো সেটা খুজে বের করবে ও একটা ভ্যারিয়েবলের মধ্যে সেভ করবে ।
৬. সেভ টেক্সট ফাংশন দ্বারা আমরা যে টেক্সট লিখেছি বা এডিট করেছি তা কোন ডাইরেক্টরিতে সেভ করবে । এর সম্পর্কে আমরা আগের পর্বে জেনেছি ।
৭. এরপর আমরা প্রিন্ট অপশন নামের একটা ফাংশন তৈরী করেছি যেটা ব্যাবহার কারীকে আমাদের তৈরী প্রোগ্রামটা সম্পর্কে ভালমত বুঝতে ও ব্যাবহার করতে সাহায্য করবে ।

যাই হোক , প্রাথমিক কাজ শেষ , এবার এই ফাংশন গুলোকে কাজে লাগানোর পালা ।
প্রথমে আমরা texts_list নামের একটা খালি লিষ্ট নিয়েছি ।এ্ই লিষ্টের মধ্যেই পরবর্তীতে আমাদের সব টেক্সট  সেভ হবে । তারপর menu_choice নামের একটা খালি ভ্যারিয়েবল নিয়ে তার মান ০ করে দিয়েছি ।
তারপর প্রিন্ট মেনু ফাংশনটাকে কল করে সব মেনু গুলো প্রিন্ট করেছি । তারপর while True নামের একটা ফাংশন নিয়ে আমরা উপরের সব লিষ্ট ও মেনু চয়েজ ঠিক আছে কিনা তা চেক করেছি ।তবে এই কাজটা আপনি “while menu_choice!=7:” এই কোডটা দিয়েও করতে পারেন । কোন সমস্যা নেই । ঠিক থাকলে এবার আমরা মেনু চয়েজ ইনপুট নিয়েছি ।তারপর এখানে সব ব্যাবহার হল if ফাংশনের ।
তারপর আমরা জাষ্ট উপরের তৈরী ফাংশনের সাথে মিল রেখে একেক রকম মেনু ইনপুট নিয়েছি ।
যেমন , যদি মেনু চয়েজ ১ হয় , তবে প্রোগ্রামটা আপনার সিলেক্ট করা টেক্সট ফাইলের সব টেক্সট প্রিন্ট করবে । তবে তার আগে আপনাকে অবশ্যই ফাইলটা লোড করে নিতে হবে ।
তারপর আমরা মেনু চয়েজ ২ এর জন্য আমরা ইউজারের কাছ থেকে ২ টা ভ্যারয়েবলের মাধ্যমে টেক্সট ও তার নাম ইনপুট নিয়ে তা অপর একটা ভ্যারিয়েবল text এর মধ্যে সেভ করে রেখেছি । আমরা যখন মেনু চয়েজ ৬ দিয়ে সেভ সিলেক্ট করবে তখন ওই ফাংশনটা এই ভ্যারিয়েবলের টেক্সটগুলো একটা ফাইলের মধ্যে আপনার পিসির হার্ড ড্রাইভে সেভ করবে । তবে সেভ এর সময় ফাইলের নামটার শেষে অবশ্যই “.txt” লিখে দিবেন । না হলে আননোন ফরম্যাটে সেভ হয়ে যাবে । তারপর আপনি কোন টেক্সট ফাইল লোড করে দেখতে চাইলে মেনু চয়েজ ৫ দিয়ে , সেই ফাইলের নামটা লিখে দিন । প্রোগ্রামটা সেই টেক্সট ফাইল লোড করবে ও তারপর ১ মেনু চয়েজ দিয়ে আপনি সেটা পড়তে পারবেন । আর মেনু চয়েজ ৭ দিলে প্রোগ্রামটা শেষ হয়ে যাবে ।

এই ভাবে পুরো প্রোগ্রামটা বুঝতে চেষ্ট করুন ।
এই হল আপনাদের পাইথন টেক্সট এডিটর এর সবকিছু । আপনি চাইলে এটার আরও অনেক কাষ্টমাইজ করে নিজের মত করে নিতে পারেন । কোন সমস্যা নেই ।

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

Level 2

আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 11 বছর 10 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 81 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 20 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Agrohi to oboshshoi 🙂

Level 0

আমি আছি …………দয়াকরে শেয়ার কইরেন সময় পেলে। ধন্যবাদ

Level 0

এটা প্রথমে .text সেভ করলাম তারপর কিভাবে কাজের জন্য উপযুক্ত করবো। এটাকে পরে কি HTML এ save করবো না অন্য কিছু।

    @orchid: না ভাই , এটাকে .txt ফরম্যাটে সেভ করলেই সেই ফাইলের মধ্যে আপনার সব কাজ সেভ থাকবে ।

vai eta ka .exe kora jaba kivaba ?

    @Ashikur Rahman: ভাই, গ্রুপে একটা পোষ্ট দেওয়া আছে দেখেন । ওইটা ফলো করে যান ।