Зипфиле модул стандардне библиотеке Питхон може се користити за компримовање датотека у ЗИП-ове и декомпримовање ЗИП датотека. Укључен је у стандардну библиотеку, тако да није потребна додатна инсталација.
Објашњени су следећи садржаји.
- Компресујте више датотека у ЗИП датотеку
- Додајте нову датотеку постојећој ЗИП датотеци
- Компресујте директоријум (фолдер) у ЗИП датотеку
- Компресовано у ЗИП датотеку са лозинком
- Проверите садржај ЗИП датотеке.
- Извуците (отпакујте) цео садржај ЗИП датотеке.
- Изаберите садржај ЗИП датотеке и распакујте га.
Компресујте више датотека у ЗИП датотеку
Направите објекат ЗипФиле и користите методу врите() да додате датотеке које желите да компримујете.
Да бисте креирали нову ЗИП датотеку, наведите путању ЗИП датотеке која ће бити креирана као први аргумент конструктора ЗипФиле објекта, а други аргумент на следећи начинw'
Поред тога, метод компресије се може навести као трећи аргумент.
zipfile.ZIP_STORED
:Само комбинујте више датотека без компресије (подразумевано)zipfile.ZIP_DEFLATED
:Нормална ЗИП компресија (потребан је злиб модул)zipfile.ZIP_BZIP2
:БЗИП2 компресија (потребан је бз2 модул)zipfile.ZIP_LZMA
:ЛЗМА компресија (потребан је лзма модул)
БЗИП2 и ЛЗМА имају већи степен компресије (могу се компримовати на мању величину), али је време потребно за компресију дуже.
У методи врите(), датотека са првим аргументом филенаме се уписује у ЗИП датотеку са другим аргументом арцнаме. Ако је име лука изостављено, име датотеке се користи као што јесте. арцнаме такође може одредити структуру директоријума.
ЗипФиле објекат треба да се затвори методом цлосе(), али ако користите витх наредбу, он ће се аутоматски затворити када се блок заврши.
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')
Одређивањем аргумента цомпресс_типе методе врите(), такође је могуће изабрати метод компресије за сваку датотеку.
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'
Затим, као у горњем примеру, само додајте датотеку користећи методу врите().
with zipfile.ZipFile('data/temp/new_comp.zip', 'a') as existing_zip:
existing_zip.write('data/temp/test4.txt', arcname='test4.txt')
Компресујте директоријум (фолдер) у ЗИП датотеку
Ако желите да компримујете цео директоријум (фолдер) у једну ЗИП датотеку, можете користити ос.сцандир() или ос.листдир() да направите листу датотека, али је лакше користити маке_арцхиве() у схутил-у модул.
Погледајте следећи чланак.
- Повезани чланци:Компресовање директоријума (фолдера) у зип или тар у Питхон-у
Компресовано у ЗИП датотеку са лозинком
Модул зипфиле не дозвољава вам да креирате ЗИП-ове заштићене лозинком. Ако желите да компримујете датотеку у зип датотеку заштићену лозинком, користите библиотеку треће стране пиминизип.
Имајте на уму да се декомпресија ЗИП-ова заштићених лозинком може обавити помоћу модула зипфиле (погледајте доле).
Проверите садржај ЗИП датотеке.
Можете да проверите садржај постојеће ЗИП датотеке.
Креирајте објекат ЗипФиле тако што ћете прву датотеку аргумента у конструктору поставити на путању постојеће зип датотеке, а режим другог аргумента на ‘р’. Аргумент режима се може изоставити пошто је подразумевана вредност ‘р’.
Можете користити метод намелист() објекта ЗипФиле да бисте добили листу архивираних датотека.
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']
Извуците (отпакујте) цео садржај ЗИП датотеке.
Да бисте распаковали садржај ЗИП датотеке, креирајте објекат ЗипФиле са првим аргументом у конструктору као путањом до постојеће ЗИП датотеке и режимом другог аргумента као ‘р’, као у примеру изнад. Аргумент режима се може изоставити јер је подразумевано постављен на ‘р’.
Метода ектрацталл() објекта ЗипФиле издваја (декомпримује) цео садржај ЗИП датотеке. Први аргумент, путања, специфицира путању директоријума у који се издваја. Ако је изостављен, датотеке ће бити извучене у тренутни директоријум.
with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
existing_zip.extractall('data/temp/ext')
ЗИП датотека са лозинком може се издвојити навођењем лозинке као аргумента пвд методе ектрацталл().
with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
pass_zip.extractall('data/temp/ext_pass', pwd='password')
Изаберите садржај ЗИП датотеке и распакујте га.
Ако желите да распакујете и издвојите само одређене датотеке, користите методу ектрацт().
Први аргумент методе ектрацт() је име датотеке коју треба издвојити, а путања другог аргумента је путања директоријума у који се издваја. Ако је аргумент путање изостављен, датотека ће бити издвојена у тренутни директоријум. Име датотеке која се екстрахује треба да садржи путању до директоријума у ЗИП датотеци ако је тамо ускладиштена.
with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
existing_zip.extract('test1.txt', 'data/temp/ext2')
Попут методе ектрацталл(), метода ектрацт() такође вам омогућава да наведете лозинку као аргумент пвд.
with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
pass_zip.extract('test1.txt', 'data/temp/ext_pass2', pwd='password')