python3實現zip格式壓縮資料夾

2021-08-22 13:48:09 字數 1650 閱讀 5144

思路:先把第一級目錄中的檔案進行遍歷,如果是檔案,則把它連同當前路徑一起加入result(list),如果是子目錄,則在整個目錄上繼續深度優先遍歷,直到所有的檔案都被加入。主要使用python3中zipfile模組:

classzipfile.zipfile

file 

[,mode 

[,compression 

[,allowzip64 

] ] ] )

引數說明:

1.第乙個引數

file可以是檔案(字串)的路徑,也可以是類檔案物件

2.第二個引數mode模式引數可以是'r'讀取現有的檔案,'w'以截斷並寫入乙個新的檔案,或'a'將追加到現有檔案。如果mode是'a'和file引用現有的zip檔案,則會向其中新增其他檔案,如果檔案未引用zip檔案,則會將新的zip存檔附加到該檔案,這用於將zip存檔新增到另乙個檔案

3.第三個引數compression是編寫存檔時使用的zip壓縮方法,可以是zip_storedzip_deflated

demo:

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os

import zipfile

def get_zip_file(input_path, result):

"""對目錄進行深度優先遍歷

:param input_path:

:param result:

:return:

"""files = os.listdir(input_path)

for file in files:

if os.path.isdir(input_path + '/' + file):

get_zip_file(input_path + '/' + file, result)

else:

def zip_file_path(input_path, output_path, output_name):

"""壓縮檔案

:param input_path: 壓縮的資料夾路徑

:param output_path: 解壓(輸出)的路徑

:param output_name: 壓縮包名稱

:return:

"""f = zipfile.zipfile(output_path + '/' + output_name, 'w', zipfile.zip_deflated)

filelists =

get_zip_file(input_path, filelists)

for file in filelists:

f.write(file)

# 呼叫了close方法才會保證完成壓縮

f.close()

return output_path + r"/" + output_name

if __name__ == '__main__':

zip_file_path(r"./testing", 'f:', '123.zip')

Python3 內建函式 zip

zip 是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素按順序組合成乙個tuple,每個tuple中包含的是原有序列中對應序號位置的元素,然後返回由這些tuples組成的list。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。在所有引數長度相...

python3中的zip函式

zip 函式用於將多個可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的物件,這樣做的好處是節約了不少的記憶體 可以使用 list 轉換來輸出列表 zip 語法 zip iterable1,iterable2,a 1 2,3 b 4 5,6 ziped data zi...

python3中的zip函式

zip函式的作用 zip函式接受任意多個可迭代物件作為引數,將物件中對應的元素打包成乙個tuple,然後返回乙個可迭代的zip物件.這個可迭代物件可以使用迴圈的方式列出其元素 若多個可迭代物件的長度不一致,則所返回的列表與長度最短的可迭代物件相同.例1 a1 1,2,3 a2 4,5,6 a3 7,...