কম্পিউটার

পাইথনে জিপ সংরক্ষণাগারগুলির সাথে কাজ করুন (zipfile)


জিপ হল আর্কাইভ এবং কম্প্রেশনের জন্য ব্যবহৃত সবচেয়ে জনপ্রিয় ফাইল ফরম্যাটগুলির মধ্যে একটি। এটি MSDOS এবং PC এর দিন থেকে ব্যবহার করা হচ্ছে এবং বিখ্যাত PKZIP অ্যাপ্লিকেশন দ্বারা ব্যবহার করা হয়েছে।

পাইথনের স্ট্যান্ডার্ড লাইব্রেরির জিপফাইল মডিউলটি এমন ক্লাস প্রদান করে যা জিপ সংরক্ষণাগার তৈরি, নিষ্কাশন, পড়া এবং লেখার জন্য সরঞ্জামগুলিকে সহজতর করে৷

ZipFile()

এই ফাংশনটি ফাইল প্যারামিটার থেকে একটি ZipFile অবজেক্ট রিটার্ন করে যা বিল্ট-ইন open() ফাংশন দ্বারা তৈরি একটি স্ট্রিং বা ফাইল অবজেক্ট হতে পারে। ফাংশনের একটি মোড প্যারামিটার প্রয়োজন যার ডিফল্ট মান হল 'r' যদিও এটি যথাক্রমে রিড, রাইট বা অ্যাপেন্ড মোডে আর্কাইভ খোলার জন্য 'w' বা 'a' মান নিতে পারে।

ডিফল্টরূপে সংরক্ষণাগারটি সংকুচিত নয়। ব্যবহার করা কম্প্রেশন অ্যালগরিদমের ধরন নির্দিষ্ট করতে, কম্প্রেশন প্যারামিটারে একটি ধ্রুবক বরাদ্দ করতে হবে।

৷ ৷ ৷
zipfile.ZIP_STORED অসংকুচিত সংরক্ষণাগার সদস্যের জন্য।
zipfile.ZIP_DEFLATED সাধারণ জিপ কম্প্রেশন পদ্ধতির জন্য। এর জন্য zlib মডিউল প্রয়োজন৷
zipfile.ZIP_BZIP2 BZIP2 কম্প্রেশন পদ্ধতির জন্য। এর জন্য bz2 মডিউল প্রয়োজন৷
zipfile.ZIP_LZMA LZMA কম্প্রেশন পদ্ধতির জন্য। এর জন্য lzma মডিউল প্রয়োজন৷

ZipFile অবজেক্ট নিম্নলিখিত পদ্ধতি ব্যবহার করে।

লিখুন()

এই পদ্ধতিটি জিপফাইল অবজেক্ট দ্বারা উপস্থাপিত সংরক্ষণাগারে ফাইল দেওয়া হয়েছে।

>>> import zipfile
>>> newzip=zipfile.ZipFile('newdir/newzip.zip','w')
>>> newzip.write('zen.txt')
>>> newzip.close()

অতিরিক্ত ফাইলটি ইতিমধ্যে বিদ্যমান সংরক্ষণাগারে যোগ করা যেতে পারে এটিকে অ্যাপেন্ড মোডে খোলার মাধ্যমে ('a' মোড হিসাবে)

>>> newzip=zipfile.ZipFile('newdir/newzip.zip','a')
>>> newzip.write('zen.txt')
>>> newzip.close()

পড়ুন()

এই পদ্ধতিটি আর্কাইভের একটি নির্দিষ্ট ফাইল থেকে ডেটা পড়ে৷

>>> newzip=zipfile.ZipFile('newdir/newzip.zip','r')
>>> data=newzip.read('json.txt')
>>> data
b'["Rakesh", {"marks": [50, 60, 70]}]'

printdir()

এই পদ্ধতিটি প্রদত্ত আর্কাইভে সমস্ত ফাইল তালিকাভুক্ত করে৷

>>> newzip.printdir()
File Name Modified Size
json.txt 2018-11-2717:04:40 35
zen.txt 2018-11-2523:13:44 878

extract()

এই পদ্ধতিটি সংরক্ষণাগার থেকে একটি নির্দিষ্ট ফাইল ডিফল্টরূপে বর্তমান ডিরেক্টরিতে বা এটিতে দ্বিতীয় প্যারামিটার হিসাবে প্রদত্ত একটি থেকে বের করে।

>>> newzip.extract('json.txt','newdir')
'newdir\\json.txt'

extractall()

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

>>> newzip.extractall('newdir')

getinfo()

এই পদ্ধতিটি প্রদত্ত ফাইলের সাথে সম্পর্কিত ZipInfo বস্তু প্রদান করে। ZipInfo অবজেক্টে ফাইলের বিভিন্ন মেটাডেটা তথ্য থাকে।

নিম্নলিখিত কোডটি সংরক্ষণাগার থেকে 'zen.txt'-এর ZipInfo অবজেক্ট পায় এবং এটি থেকে ফাইলের নাম, আকার এবং তারিখ-সময়ের তথ্য পুনরুদ্ধার করে।

>>> inf = newzip.getinfo('zen.txt')
>>> inf.filename,inf.file_size, inf.date_time
('zen.txt', 878, (2018, 11, 25, 23, 13, 45))

ইনফোলিস্ট()

এই পদ্ধতিটি সংরক্ষণাগারের সমস্ত ফাইলের ZipInfo অবজেক্টের একটি তালিকা প্রদান করে।

>>> newzip.infolist()
[<ZipInfo filename = 'json.txt' filemode='-rw-rw-rw-' file_size=35>, <ZipInfo filename = 'zen.txt' filemode='-rw-rw-rw-' file_size=878>]

পূর্বে উল্লিখিত হিসাবে, জিপ সংরক্ষণাগার নির্মাণের সময় কম্প্রেশন অ্যালগরিদম প্রয়োগ করা হবে কম্প্রেশন প্যারামিটারে নির্দিষ্ট করা আছে। নিম্নলিখিত কোডে, ZIP-DEFLATED ধ্রুবক zlib কম্প্রেশন ব্যবহার করে সংরক্ষণাগার তৈরি করে।

>>> zipobj = zipfile.ZipFile('txtzip.zip',mode='w', compression=zipfile.ZIP_DEFLATED)
>>> files=glob.glob("*.txt")
>>> for file in files:
zipobj.write(file)
>>> zipobj.close()

নাম তালিকাভুক্ত()

ZipFile অবজেক্টের এই পদ্ধতিটি সংরক্ষণাগারের সমস্ত ফাইলের একটি তালিকা প্রদান করে।

>>> zipobj = zipfile.ZipFile('txtzip.zip',mode='r')
>>> zipobj.namelist()
['a!.txt', 'data().txt', 'dict.txt', 'json.txt', 'LICENSE.txt', 'lines.txt', 'msg.txt', 'NEWS.txt', 'test.txt/', 'zen.txt', 'zen1.txt', 'zenbak.txt']

সেটপাসওয়ার্ড()

এই পদ্ধতিটি পাসওয়ার্ড প্যারামিটার সেট করে যা সংরক্ষণাগার বের করার সময় অবশ্যই প্রদান করতে হবে।

PyZipFile()

zipfile মডিউলের এই ফাংশন PyZipFile অবজেক্ট প্রদান করে। PyZipFile অবজেক্ট .py এক্সটেনশন সহ ফাইল ধারণকারী একটি মডিউল তৈরি করতে পারে। এই সংরক্ষণাগারটি sys.path এনভায়রনমেন্ট ভেরিয়েবলে যোগ করা যেতে পারে যাতে মডিউলটি zipimport মডিউল ব্যবহার করে আমদানি করা যায়।

writepy() পদ্ধতি সংশ্লিষ্ট .pyc ফাইলে কম্পাইল করার পর সংরক্ষণাগারে একটি .py ফাইল যোগ করে।

ফাইলের জন্য
files=glob.glob("*.py")
>>> pyzipobj = zipfile.PyZipFile('pyfiles/pyzip.zip', mode='w', compression=zipfile.ZIP_LZMA)
>>> for file in files:
pyzipobj.writepy(file)
>>> pyzipobj.close()

এই নিবন্ধে জিপফাইল মডিউলের ক্লাস এবং ফাংশন নিয়ে আলোচনা করা হয়েছে।


  1. পাইথন - এন দিয়ে K দূরত্বে উপাদানগুলি সরান

  2. বোকেহ (পাইথন) এর চিত্রগুলির সাথে কীভাবে কাজ করবেন?

  3. Python এ অক্ষর সাবস্ট্রিং এর সাথে কাজ করার জন্য Tensorflow কিভাবে ব্যবহার করা যেতে পারে?

  4. Python - PyGame এর সাথে ছবি প্রদর্শন করুন