Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Архивирането е елегантен начин за компресиране на няколко файла и комбинирането им в един. Това спестява не само място за съхранение, но и честотна лента при прехвърляне на файл през мрежа. Една от най-добрите характеристики на zip е, че работи на всички основни платформи: Windows, Linux и Mac.

Zip използва компресия без загуби, така че да запази всички данни, когато ги компресира и декомпресира. Можете също така да шифровате и дешифрирате своите zip файлове.

С толкова много функции за изследване, открийте как можете да четете, компресирате и разархивирате файлове с помощта на модула zipfile на Python.

Какво представлява модулът zipfile?

Можете да използвате стандартния модул zipfile, за да манипулирате zip файлове с помощта на Python. С този модул можете да отваряте и четете zip файлове, да четете техните метаданни, да създавате zip файл, да го компресирате и да разархивирате файлове. Налични са три метода за компресиране: Deflate, Bzip2 и LZMA.

instagram viewer

Едно от нещата, които липсват на модула, е способността да обработва многодискови файлове, но той се справя с разширението ZIP64. Може също така да дешифрира zip архиви, но не и да ги шифрова. С помощта на модула zipfile можете да получите метаданни на zip файла като датата и часа на модификация. Можете също така да извлечете подробности като операционната система, използвана за създаване на файла, версията на zip и размера на файла както в компресиран, така и в некомпресиран формат.

Как да компресирате файлове с помощта на Python

Можете да компресирате няколко файла в един архив с помощта на модула zipfile на Python. Импортирайте ZipFile модул от zipфайл пакет за извършване на необходимите zip операции. Също внос на операционна система модул за избор и запазване на файлове.

Дефинирайте функция get_all_file_paths(). Той трябва да приеме параметър на директория, който съдържа пътя до папката, съдържаща файловете за компресиране.

Инициализирайте празен списък, който ще съхранява списъка с файлови пътища. Използвайте for цикъл, за да получите пълното съдържание на целевата директория, като използвате os.walk() функция. Тази функция извлича имената на файловете в дървото на директорията, като се движи по него в подход отгоре надолу или отдолу нагоре. За всяка директория функцията връща три кортежа, съдържащ корен, директории и файлове.

Коренът е низ, който съдържа пълния път до директорията. Списъкът с директории включва всички поддиректории, съдържащи се в директорията. Списъкът с файлове съдържа всички налични файлове в директорията.

Вътре в цикъла декларирайте друг цикъл за итерация в списъка с файлове. Използвай os.path.join() функция за комбиниране на името на директорията с всяко име на файл, за да направите пълен път. След това добавете това пълно име на файл към списъка, който сте създали по-рано. След като тази операция приключи, върнете списъка с файлови пътища.

# импортирайте необходимите модули
от zipфайл импортиране ZipFile
импортиране операционна система

# създайте функция за получаване на всички файлови пътища
дефget_all_file_paths(указател):
# инициализиране на празен списък за съхраняване на файлови пътища
файлови_пътеки = []

# навигирайте през файловете
закорен, директории, файловевоперационна система.разходка(указател):
за име на файл във файлове:
# съединете корена и името на файла, за да създадете пълен път към файла
filepath = os.path.join (root, име на файл)
файлови_пътища.добавете(файлова пътека)

# връщане на всички файлови пътища
връщане файлови_пътища

Съхранявайте пътя до папката, която съдържа файловете, които искате да компресирате, в променлива, наречена директория. Извикайте функцията, get_all_file_paths() който сте създали по-рано и съхранявате стойността, в която се връща файлови_пътища.

Покажете съобщение на потребителя, за да го уведомите, че това са файловете, които програмата ще компресира. Обходете файловете и покажете техните имена.

Предайте името, което искате да има вашият zip файл, заедно със спецификацията, че програмата връща файл с възможност за запис, използвайки оператора with за обработка на изключения. Превъртете всеки файл и използвайте функцията write() над файла с възможност за запис в zip файл.

Когато операцията приключи, изведете съобщение, обясняващо, че програмата е компресирала всички файлове успешно.

# път към папката, която искате да компресирате
директория = './pythonzip'

# извикваща функция за получаване на всички пътеки към файлове в директорията
file_paths = get_all_file_paths (директория)

# отпечатване на списъка с всички файлове, които искате да компресирате
печат(„Списък с файлове, които ще бъдат компресирани:“)

за file_name в file_paths:
печат(име на файл)

# запис на файлове в zip файл
с ZipFile('my_file.zip', "w") като цип:
# напишете всеки файл един по един
за файл във file_paths:
цип.пиши(файл)

печат('Всички файлове са компресирани!')

Как да разархивирате файлове с помощта на Python

Реализирането на разархивиране на файлове с помощта на модула zipfile е много по-лесно. Импортирайте zipфайл пакет от ZipFile модул и запазете името на zip файла, който искате да извлечете, в променлива. Използвайте израза with за обработка на изключения и отваряне на файла, който искате да извлечете, в режим на четене. Използвай printdir() функция за показване на съдържанието на файловете, налични в zip.

Покажете съобщение за напредък, че извличате файловете и използвайте извличане() функция за извличане на съдържанието на zip файла в текущата работна директория. Като алтернатива можете да включите параметър за път, за да промените пътя, където програмата извлича файловете.

Показване на съобщение с помощта на печат декларация за приключване на операцията.

# импортиране на необходимите модули
от zipфайл импортиране ZipFile

# подайте името на zip файла, който искате да извлечете
име_на_файл = "extract.zip"

# отваряне на zip файла в режим на четене
с ZipFile (име_на_файл, "р") като цип:
# показване на съдържанието на zip файла
цип.printdir()

# извличане на всички файлове
печат(„В процес на извличане...“)
цип.extractall()
печат('Всички файлове са извлечени!')

Повече за Zip файловете

Zip файловете придобиха голяма популярност и се използват от десетилетия. Популярни уебсайтове като GitHub и Google Drive ви позволяват да изтеглите колекция от файлове като zip архив. Програмата zip компресира набор от файлове в един пакет. Това е в контраст с инструмент като tar, който пакетира файлове заедно, но не ги компресира.

Ако искате да шифровате вашите файлове с помощта на по-ефективен алгоритъм, RAR файловете са правилният начин. RAR използва алгоритъма AES-128, който е по-добър от алгоритъма за дефлиране, използван от zip файловете. В крайна сметка изберете този, който най-добре отговаря на вашите нужди.