环境:Python3.7.3
IDE:Pycharm
操作系统:Win10
将某一文件夹内的所有文件夹进行打包,其下的所有文件依照原有的存储路径一同打包到zip包内。
zipfle核心代码:
创建zip:
zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)#zipfile的核心逻辑,创建zip
zip写入数据:
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")#创建zip文件
zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)#zipfile的核心逻辑,创建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, "")#存储逻辑不变
for filename in filenames:
zip.write(os.path.join(root, filename), os.path.join(fpath, filename))#zip中写入文件,并保留原有存储逻辑
if __name__ == '__main__':
inputpath = r"D:\ccc\data\ddd"
main(inputpath)
以上。
网友评论