zipfile ازگر میں زپ فائلوں کو کمپریس اور غیر کمپریس کرنے کے لیے

کاروبار

پائتھون معیاری لائبریری کا زپ فائل ماڈیول فائلوں کو زپ میں کمپریس کرنے اور زپ فائلوں کو غیر کمپریس کرنے کے لیے استعمال کیا جا سکتا ہے۔ یہ معیاری لائبریری میں شامل ہے، لہذا کسی اضافی تنصیب کی ضرورت نہیں ہے۔

مندرجہ ذیل مواد کی وضاحت کی گئی ہے۔

  • زپ فائل میں متعدد فائلوں کو کمپریس کریں۔
  • موجودہ زپ فائل میں ایک نئی فائل شامل کریں۔
  • ڈائریکٹری (فولڈر) کو زپ فائل میں کمپریس کریں۔
  • پاس ورڈ کے ساتھ زپ فائل میں کمپریس کیا گیا۔
  • زپ فائل کے مواد کو چیک کریں۔
  • زپ فائل کے پورے مواد کو نکالیں (پیک کھولیں)۔
  • زپ فائل کے مواد کو منتخب کریں اور اسے نکالیں۔

زپ فائل میں متعدد فائلوں کو کمپریس کریں۔

ایک ZipFile آبجیکٹ بنائیں اور ان فائلوں کو شامل کرنے کے لیے write() طریقہ استعمال کریں جنہیں آپ کمپریس کرنا چاہتے ہیں۔

ایک نئی زپ فائل بنانے کے لیے، زپ فائل کے راستے کی وضاحت کریں جو زپ فائل آبجیکٹ کے کنسٹرکٹر کی پہلی دلیل کے طور پر بنائی جائے، اور دوسری دلیل مندرجہ ذیل ہے۔w'

اس کے علاوہ، کمپریشن کا طریقہ تیسری دلیل کے طور پر بیان کیا جا سکتا ہے۔

  • zipfile.ZIP_STORED:صرف متعدد فائلوں کو کمپریشن کے بغیر یکجا کریں (پہلے سے طے شدہ)
  • zipfile.ZIP_DEFLATED:عام زپ کمپریشن (zlib ماڈیول درکار ہے)
  • zipfile.ZIP_BZIP2:BZIP2 کمپریشن (bz2 ماڈیول درکار ہے)
  • zipfile.ZIP_LZMA:LZMA کمپریشن (lzma ماڈیول درکار ہے)

BZIP2 اور LZMA کا کمپریشن تناسب زیادہ ہے (چھوٹے سائز میں کمپریس کیا جا سکتا ہے)، لیکن کمپریشن کے لیے درکار وقت زیادہ ہے۔

رائٹ() طریقہ میں، پہلی دلیل فائل نام والی فائل کو دوسری آرگیومینٹ آرک نیم کے ساتھ زپ فائل میں لکھا جاتا ہے۔ اگر آرک نام کو چھوڑ دیا جائے تو، فائل کا نام بطور استعمال کیا جاتا ہے۔ آرک نام ایک ڈائریکٹری ڈھانچہ بھی بتا سکتا ہے۔

ZipFile آبجیکٹ کو close() طریقہ کے ساتھ بند کرنے کی ضرورت ہے، لیکن اگر آپ بیان کے ساتھ استعمال کرتے ہیں، تو بلاک ختم ہونے پر یہ خود بخود بند ہو جائے گا۔

import zipfile

with zipfile.ZipFile('data/temp/new_comp.zip', 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
    new_zip.write('data/temp/test1.txt', arcname='test1.txt')
    new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
    new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')

تحریر() طریقہ کار کی compress_type دلیل کی وضاحت کرنے سے، ہر فائل کے لیے کمپریشن کا طریقہ منتخب کرنا بھی ممکن ہے۔

with zipfile.ZipFile('data/temp/new_comp_single.zip', 'w') as new_zip:
    new_zip.write('data/temp/test1.txt', arcname='test1.txt', compress_type=zipfile.ZIP_DEFLATED)
    new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
    new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')

موجودہ زپ فائل میں ایک نئی فائل شامل کریں۔

موجودہ زپ فائل میں نئی ​​فائل شامل کرنے کے لیے، زپ فائل آبجیکٹ بناتے وقت کنسٹرکٹر کی پہلی دلیل کو موجودہ زپ فائل کے راستے پر سیٹ کریں۔ اس کے علاوہ، مندرجہ ذیل کے طور پر دوسرا دلیل موڈ سیٹ کریں.a'

پھر، جیسا کہ اوپر کی مثال میں ہے، صرف write() طریقہ استعمال کرتے ہوئے فائل کو شامل کریں۔

with zipfile.ZipFile('data/temp/new_comp.zip', 'a') as existing_zip:
    existing_zip.write('data/temp/test4.txt', arcname='test4.txt')

ڈائریکٹری (فولڈر) کو زپ فائل میں کمپریس کریں۔

اگر آپ پوری ڈائرکٹری (فولڈر) کو ایک زپ فائل میں کمپریس کرنا چاہتے ہیں، تو آپ فائلوں کی فہرست بنانے کے لیے os.scandir() یا os.listdir() استعمال کرسکتے ہیں، لیکن shutil میں make_archive() استعمال کرنا آسان ہے۔ ماڈیول

اگلا مضمون دیکھیں۔

پاس ورڈ کے ساتھ زپ فائل میں کمپریس کیا گیا۔

زپ فائل ماڈیول آپ کو پاس ورڈ سے محفوظ زپ بنانے کی اجازت نہیں دیتا ہے۔ اگر آپ کسی فائل کو پاس ورڈ سے محفوظ زپ فائل میں کمپریس کرنا چاہتے ہیں تو تھرڈ پارٹی لائبریری pyminizip استعمال کریں۔

نوٹ کریں کہ پاس ورڈ سے محفوظ زپ کی ڈیکمپریشن زپ فائل ماڈیول کے ساتھ کی جا سکتی ہے (نیچے دیکھیں)۔

زپ فائل کے مواد کو چیک کریں۔

آپ موجودہ زپ فائل کے مواد کو چیک کر سکتے ہیں۔

کنسٹرکٹر میں پہلی آرگیومنٹ فائل کو موجودہ زپ فائل کے پاتھ پر اور دوسری آرگیومنٹ موڈ کو ‘r’ پر سیٹ کرکے ایک ZipFile آبجیکٹ بنائیں۔ موڈ دلیل کو خارج کیا جا سکتا ہے کیونکہ ڈیفالٹ ‘r’ ہے۔

آپ محفوظ شدہ فائلوں کی فہرست حاصل کرنے کے لیے ZipFile آبجیکٹ کا namelist() طریقہ استعمال کر سکتے ہیں۔

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    print(existing_zip.namelist())
# ['test1.txt', 'zipdir/test2.txt', 'zipdir/sub_dir/test3.txt', 'test4.txt']

زپ فائل کے پورے مواد کو نکالیں (پیک کھولیں)۔

زپ فائل کے مواد کو کھولنے کے لیے، کنسٹرکٹر میں پہلی آرگیومینٹ فائل کے ساتھ ایک ZipFile آبجیکٹ بنائیں موجودہ ZIP فائل کے راستے کے طور پر اور دوسرا آرگومنٹ موڈ ‘r’ کے طور پر، جیسا کہ اوپر کی مثال میں ہے۔ موڈ آرگومنٹ کو چھوڑا جا سکتا ہے کیونکہ یہ ڈیفالٹ ‘r’ ہے۔

ZipFile آبجیکٹ کا extractall() طریقہ زپ فائل کے پورے مواد کو نکالتا ہے (کمپریس) کرتا ہے۔ پہلی دلیل، راستہ، ڈائریکٹری کا راستہ بتاتا ہے جس کو نکالنا ہے۔ اگر اسے چھوڑ دیا جاتا ہے تو، فائلیں موجودہ ڈائریکٹری میں نکالی جائیں گی۔

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    existing_zip.extractall('data/temp/ext')

پاس ورڈ کے ساتھ ایک ZIP فائل کو extractall() طریقہ کے دلیل pwd کے بطور پاس ورڈ بتا کر نکالا جا سکتا ہے۔

with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
    pass_zip.extractall('data/temp/ext_pass', pwd='password')

زپ فائل کے مواد کو منتخب کریں اور اسے نکالیں۔

اگر آپ صرف مخصوص فائلوں کو کھولنا اور نکالنا چاہتے ہیں تو extract() طریقہ استعمال کریں۔

extract() طریقہ کا پہلا استدلال نکالنے کے لیے فائل کا نام ہے، اور دوسری دلیل کا راستہ ڈائریکٹری کا راستہ ہے جس میں نکالنا ہے۔ اگر پاتھ آرگیومنٹ کو چھوڑ دیا جائے تو فائل کو موجودہ ڈائرکٹری میں نکالا جائے گا۔ نکالی جانی والی فائل کے نام میں زپ فائل میں ڈائریکٹری کا راستہ شامل ہونا چاہیے اگر یہ وہاں محفوظ ہے۔

with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
    existing_zip.extract('test1.txt', 'data/temp/ext2')

extractall() طریقہ کی طرح، extract() طریقہ آپ کو آرگیومینٹ pwd کے بطور پاس ورڈ بتانے کی بھی اجازت دیتا ہے۔

with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
    pass_zip.extract('test1.txt', 'data/temp/ext_pass2', pwd='password')
Copied title and URL