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

পাইথন বাইনারি ডেটা সার্ভিসস (struct মডিউল)


পাইথন লাইব্রেরির struct মডিউলের প্রয়োজনীয়তা C-টাইপ স্ট্রাক্ট এবং পাইথন বাইটস অবজেক্টের মধ্যে কনভার্সন انجام দিতে সাহায্য করে। এটি মডিউল-লেভেল ফাংশন এবং Struct ক্লাস ও তার মেথডদ্বারা করা যায়।

কনভার্সন ফাংশনগুলো একটি ফরম্যাট স্ট্রিং ব্যবহার করে। ফরম্যাট স্ট্রিং-এ ব্যবহার করা বাইট অর্ডার, আকার এবং অ্যালাইনমেন্ট ফরম্যাটিং ক্যারেক্টার দ্বারা নির্ধারিত হয়, নিচের টেবিল অনুযায়ী:

Character Byte order Size Alignment
@ native native native
= native standard none
< little-endian standard none
> big-endian standard none
! network (= big-endian) standard none

নিচের টেবিলটি C-টাইপ ভেরিয়েবল এবং відповresponding পাইথন টাইপ নির্দেশকারী ফরম্যাট ক্যারেক্টারগুলো দেখাচ্ছে।

Format C Type Python type
x pad byte no value
c char bytes of length 1
b/B signed/unsigned char integer
? _Bool bool
h/H short/unsigned short integer
i/I int/unsigned int integer
l/L long/unsigned long integer
f float float
d double float
s char[] bytes
p char[] bytes
P void * integer

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

pack()

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

unpack()

এই ফাংশনটি ফরম্যাট স্ট্রিং অনুযায়ী বাফার থেকে আনপ্যাক করে। ফলাফল একটি টাপল, এমনকি যদি সেটিতে শুধু একটি আইটেম থাকে।

নিচের কোডটি এই ফাংশনগুলো ব্যবহারের উদাহরণ:

import struct student = (1, b'Rahul', 65.75) packed = struct.pack('I 5s f', *student) print('packed data:', packed) unpacked = struct.unpack('I 5s f', packed) print('unpacked data:', unpacked)

আউটপুট

packed data: b'\x01\x00\x00\x00Rahul\x00\x00\x00\x00\x80\x83B' unpacked data: (1, b'Rahul', 65.75)

প্যাকিং/আনপ্যাকিং Struct ক্লাসের মেথডদ্বারাও করা যায়। একবার Struct অবজেক্ট তৈরি করে তার মেথড কল করা একই ফরম্যাট স্ট্রিংয়ের সাথে struct ফাংশন কল করার চেয়ে বেশি দক্ষ, কারণ ফরম্যাট স্ট্রিংটি শুধু একবার কম্পাইল করা প্রয়োজন।

Struct(format)

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

pack()

এই মেথডটি কম্পাইল্ড ফরম্যাট ব্যবহার করে pack() ফাংশন जैसा কাজ করে।

unpack()

এই মেথডটি কম্পাইল্ড ফরম্যাট ব্যবহার করে unpack() ফাংশন जैसा কাজ করে।

নিচের উদাহরণটি Struct ক্লাস ব্যবহার করে পাইথন ডেটা প্যাক এবং আনপ্যাক করার প্রদর্শন করে।

s = struct.Struct('I 5s f') packed = s.pack(*student) print(packed) unpacked = s.unpack(packed) print(unpacked)

প্যাক করা ডেটা সরাসরি একটি নেমড টাপল অবজেক্টে পার্স করা যায়।

from collections import namedtuple newstudent = namedtuple('newstudent', 'No Name Marks') s1 = newstudent._make(struct.unpack('I 5s f', packed)) print(s1)

আউটপুট

newstudent(No=1, Name=b'Rahul', Marks=65.75)

  1. পাইথনে স্ট্যাটিস্টিক্যাল থিংকিং (Statistical Thinking)

  2. পাইথনে ফ্রড ডিটেকশন (Fraud Detection)

  3. পাইথনে সেন্সাস ডেটা অ্যানালাইসিস (Analyzing Census Data)

  4. পাইথনে বাইনারি ডেটা ফাইলে লেখার পদ্ধতি