環(huán)境:Python3.7.3
IDE:Pycharm
操作系統(tǒng):Win10
將某一文件夾內(nèi)的所有文件夾進(jìn)行打包除师,其下的所有文件依照原有的存儲(chǔ)路徑一同打包到zip包內(nèi)。
zipfle核心代碼:
創(chuàng)建zip:
zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)#zipfile的核心邏輯扁远,創(chuàng)建zip
zip寫入數(shù)據(jù):
zip.write(filePath,zipPath )#zip中寫入文件俊鱼, filePath為文件本身路徑,zipPath為在zip中的路徑(zip根目錄為空)畅买。
示例
import os, zipfile
def main(input):
dir_list = os.listdir(input)
for dir in dir_list:
p_dir = os.path.join(input, dir)
if not os.path.isdir(p_dir):#不是文件夾直接跳過
print("不是文件夾并闲,跳過了:",p_dir)
continue
zip_name = os.path.join(input, dir + ".zip")#創(chuàng)建zip文件
zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)#zipfile的核心邏輯,創(chuàng)建zip
do_zip(zip, p_dir)
zip.close()
def do_zip(zip, p_dir):
for root, dirs, filenames in os.walk(p_dir):
fpath = root.replace(p_dir, "")#存儲(chǔ)邏輯不變
for filename in filenames:
zip.write(os.path.join(root, filename), os.path.join(fpath, filename))#zip中寫入文件谷羞,并保留原有存儲(chǔ)邏輯
if __name__ == '__main__':
inputpath = r"D:\ccc\data\ddd"
main(inputpath)
以上帝火。