পাইথনে এক্সেপশন নিয়ন্ত্রণ ( পর্ব-১৭ )


পাইথনের এই ধারাবাহিক অনুসরণ প্রথম পর্ব থেকেই যাঁরা করেছেন তাঁরা কাজের কোনো না কোনো সময় বিভিন্ন ধরনের ‘এরর’ পেয়েছেন। নিচের প্রোগ্রামিং সংকেত (কোড) দেখুন:

while True:

i=int(input(“Enter an integer: “))

print (i)

আউটপুট আসবে: Enter an integer:

এখন যদি আপনি কোনো নম্বর না দিয়ে অন্য কোনো অক্ষর দিয়ে থাকেন, যেমন ধরুন আপনি ভুলক্রমে r দিলেন, তাহলে নিচের এররটি দেখাবে:

Traceback (most recent call last):

File “”, line 1, in

ValueError: invalid literal for int() with base 10: ¤r¤

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

while True:

try:

n=int(input(“Enter an integer: “))

print (n)

except ValueError:

print(“You didn¤t enter a number”)

এখন নম্বর ছাড়া অন্য কিছু লিখলে আউটপুট দেবে: You didn¤t enter a number, যা except block-এ লেখা ছিল।

পাইথনে নেটওয়ার্ক প্রোগ্রামিং ( পর্ব-১৬ )


ফেসবুকসহ চ্যাটের জন্য বিভিন্ন প্রোগ্রাম আমরা ব্যবহার করে থাকি। পাইথন দিয়ে চাইলে এ ধরনের প্রোগ্রামও আপনি বানাতে পারেন। এ ধরনের প্রোগ্রামের জন্য সকেট প্রোগ্রামিং ব্যবহূত হয়। আজ সহজ একটি প্রোগ্রাম আমরা বানাব, যা দিয়ে একমুখী বার্তা প্রেরণ করা যায়। তাহলে প্রথমে একবার পাইথন চালু করে লিখে ফেলুন:

import socket

port=8082

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind((“”,port))

while 1:

data,addৎ=s.recvfrom(1024)

print(data)

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

import socket

port=8082

host=”localhost”

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind((“”,0))

s.sendto(b”It’s Working”,(host,port))

দেখবেন আগের পাইথনের উইন্ডোতে sendto() ভেতরের লেখাটি দেখাচ্ছে।

ফাইল এবং আরও ফাইল (পর্ব-১৫)


ফাইল নিয়ে কাজ শুরু করতে হলে ফাইলটি কোথায় সেভ আছে বা করতে হবে তা দেখিয়ে দিতে হবে। দেখুন: file=open(“test.txt”,”w”)

এটি কোথায় আছে তা দেখতে চাইলে স্টার্ট মেনু থেকে রান কমান্ডে যান এবং টাইপ করুন: %userprofile%, দেখতে পারবেন যে ফোল্ডারটি দেখাচ্ছে সেখানে test নামে একটি টেক্সট ফাইল রয়েছে। এখানে দেখুন শুধু ফাইলের নাম দেওয়া আছে, আপনি চাইলে কোন ড্রাইভের কোন ফোল্ডারে সেভ হবে তা নির্দিষ্ট করে দিতে পারেন। যেমন:

f1=open (“C:/Python33/test.txt”,”w”)

দেখতে পাবেন C: ড্রাইভের Python33 নামক ফোল্ডারে টেক্সট ফাইলটি রয়েছে। দ্বিতীয় প্যারামিটারটি লক্ষ করুন। গত পর্বে বলেছিলাম w হচ্ছে যখন ফাইলে কিছু লিখবেন এবং r যখন ফাইলের ভেতরের লেখা পড়বেন। ফাইলে কাজ করার জন্য পাইথন পয়েন্টার ব্যবহার করে। পয়েন্টারের বৈশিষ্ট্য হচ্ছে এটি কোনো অক্ষর বা ফাইলের নির্দিষ্ট জায়গাকে নির্দেশ করে। একটি উদাহরণ দিলে ব্যাপারটি পরিষ্কার হবে। প্রথমে আপনি নোট প্যাডে লিখুন: abcdefghijklmnopqrstuvwxyz0123456789 এবং C: ড্রাইভে alphabet.txt নামে সেভ করুন। তারপর পাইথনে লিখুন:

f2=open(“C:/alphabet.txt”,”r”)

f2.read(26)

আউটপুট: abcdefghijklmnopqrstuvwxyz

f2.read(10)

আউটপুট:0123456789

দেখুন, প্রথমে পয়েন্টার ফাইলের প্রথমে ছিল। তাই প্রথম ২৬টি অক্ষর দেখাচ্ছে। পয়েন্টার এখন ২৬-এর ঘরে রয়েছে। তাই পরের লাইনে ২৬-এর পরের অক্ষরগুলো দেখাচ্ছে। এভাবে পয়েন্টার পুরো ফাইল পড়ে ফেললে আর কোনো অক্ষর দেখাবে না। আবার প্রথম বা অন্য যেকোনো স্থানে পয়েন্টার নিতে পারেন। alphabet.txt ফাইলের জন্য লক্ষ করুন: f2.seek(0)

seek দিয়ে এভাবে ফাইলের প্রয়োজনমতো স্থানে আপনি যেতে পারবেন। এবার লিখুন:

f2.read(10)

আউটপুট:abcdefghij

f2.read(26)

আউটপুট:klmnopqrstuvwxyz0123456789

টেক্সট ফাইল ব্যতীত অন্য ধরনের ফাইল পড়ার জন্য wb এবং লেখার জন্য wb ব্যবহার করুন।