সমস্যা
পাইথনে কম্প্রেসড ফাইল তৈরি করতে চান।
ভূমিকা
ZIP ফাইল অনেক ফাইলের কম্প্রেসড কন্টেন্ট ধারণ করতে পারে। ফাইল কম্প্রেস করলে ডিস্কে আকার কমে, ইন্টারনেট বা সিস্টেম間 ট্রান্সফার সহজ হয়। পাইথনের zipfile মডিউল ZIP ফাইল তৈরি করে।
কীভাবে করবেন
১. zipfile এবং io প্যাকেজ ইম্পোর্ট
২. স্যাম্পল ডেটা ফাইলে লিখার ফাংশন
import io
def write_data_to_files(inp_data, file_name):
throwaway_storage = io.StringIO(inp_data)
with open(file_name, 'w') as f:
for line in throwaway_storage:
f.write(line)
৩. ফাইল কম্প্রেস ফাংশন
import zipfile
def file_compress(inp_file_names, out_zip_file):
compression = zipfile.ZIP_DEFLATED
zf = zipfile.ZipFile(out_zip_file, mode="w")
try:
for file_to_write in inp_file_names:
zf.write(file_to_write, file_to_write, compress_type=compression)
except FileNotFoundError as e:
print(f'Exception: {e}')
finally:
zf.close()
ZipFile অবজেক্ট 'w' মোডে খুলতে হয়। write()-র প্রথম আর্গুমেন্ট ফাইল পাথ, দ্বিতীয় আর্গুমেন্ট ZIP-এ ফাইলনেম, compress_type কম্প্রেশন অ্যালগরিদম।
৪. দুটি CSV ফাইল তৈরি করে ZIP করা
file_name1 = "temporary_file1_for_zip.csv"
file_name2 = "temporary_file2_for_zip.csv"
file_name_list = [file_name1, file_name2]
zip_file_name = "temporary.zip"
file_data_1 = """player,titles
Federer,20
Nadal,20
Djokovic,17
Murray,3"""
file_data_2 = """player,titles
Theim,1
Zverev,0
Medvedev,0
Rublev,0"""
write_data_to_files(file_data_1, file_name1)
write_data_to_files(file_data_2, file_name2)
file_compress(file_name_list, zip_file_name)
৫. সম্পূর্ণ কোড একসাথে
import zipfile
import io
import pandas as pd
def write_data_to_files(inp_data, file_name):
print(f"Writing the data to - {file_name}")
throwaway_storage = io.StringIO(inp_data)
with open(file_name, 'w') as f:
for line in throwaway_storage:
f.write(line)
def file_compress(inp_file_names, out_zip_file):
compression = zipfile.ZIP_DEFLATED
print(f"Input File name passed for zipping - {inp_file_names}")
print(f'out_zip_file is - {out_zip_file}')
zf = zipfile.ZipFile(out_zip_file, mode="w")
try:
for file_to_write in inp_file_names:
print(f'Processing file {file_to_write}')
zf.write(file_to_write, file_to_write, compress_type=compression)
except FileNotFoundError as e:
print(f'Exception occurred during zip process - {e}')
finally:
zf.close()
if __name__ == '__main__':
file_name1 = "temporary_file1_for_zip.csv"
file_name2 = "temporary_file2_for_zip.csv"
file_name_list = [file_name1, file_name2]
zip_file_name = "temporary.zip"
file_data_1 = """player,titles
Federer,20
Nadal,20
Djokovic,17
Murray,3"""
file_data_2 = """player,titles
Theim,1
Zverev,0
Medvedev,0
Rublev,0"""
write_data_to_files(file_data_1, file_name1)
write_data_to_files(file_data_2, file_name2)
file_compress(file_name_list, zip_file_name)
আউটপুট
- temporary_file1_for_zip.csv তৈরি হয়ে থাকে।
- temporary_file2_for_zip.csv তৈরি হয়ে থাকে।
- temporary.zip ফাইল তৈরি হয়ে থাকে।