思路:先把第一級目錄中的檔案進行遍歷,如果是檔案,則把它連同當前路徑一起加入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_stored
或zip_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,...