美文网首页
写一个带忽略名单的打包压缩脚本

写一个带忽略名单的打包压缩脚本

作者: 七分小熊猫 | 来源:发表于2018-02-08 20:32 被阅读19次

人生苦短,我用Python

image.png

前几天朋友让我把手里的一个Android demo项目打个压缩包发给他,于是我试着直接对项目进行打包,好家伙,19M那么大,明明没几行代码.肯定是app/build文件夹惹的祸,一看才发现它有64M那么大,然后因为build是在app这个目录下,压缩的时候只能把app这个文件夹整个打包进去,可是我又不想要app目录下的build文件夹,于是我选择用Python写一个个性化压缩工具.只需要双击脚本就可以自动打包好这个项目.

首先我通过搜索找到Python有个自带的标准库 zipfile 通过这个库就可以把文件和目录打包进zip里.

首先引包,然后创建一个压缩包对象

import zipfile
zip = zipfile.ZipFile('test.zip',mode='w',compression=zipfile.ZIP_BZIP2)

跟open()差不多的,test.zip 是文件名,mode='w' 就是写入的意思,也可以写 'a' 表示追加,compression表示压缩方法.

然后向压缩包添加一个文件,添加完了后一定要close()

zip.write('README.md')
zip.close()

好了,zipfile库的基础用法就这样了,当然你也可以用它解压压缩包,下面开始编写我的个性化压缩工具

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'JethroCup'

import zipfile
import os
output='out.zip' #输出文件名
ignore = ['build'] #忽略的文件或目录
ignore.append(output) #忽略输出的文件名,如果不忽略将产生死循环

代码中定义了一个ignore变量,就是我们的忽略名单了,当我们的文件遍历方法遍历到名单中的文件或文件夹名时将会当作没看到这个文件.
上文件遍历方法

def dfs_get_zip_file(input_path,result):
    '''
    遍历文件和目录的路径
    input_path:要遍历那个文件夹
    result:存储路径的list,遍历到的路径将存储在这个变量中
    '''
    files = os.listdir(input_path)
    for file in files:
        #筛选出忽略列表中的文件和目录
        if file in ignore:
            continue
        if os.path.isdir(input_path+'/'+file):
            dfs_get_zip_file(os.path.join(input_path,file),result)
        else:
            result.append(os.path.join(input_path,file))

遍历出了所有文件路径后,我们就将他们一一write进zip中

def autozip():
    '''
    自动打包压缩
    '''
    zip = zipfile.ZipFile(output,mode='w',compression=zipfile.ZIP_BZIP2)

    filelist=[] #存储遍历到的路径
    dfs_get_zip_file('.',filelist)
    for file in filelist:
        print(file)
        zip.write(file)
    zip.close()

OK,最后

if __name__ == "__main__":
    autozip()
    input('已压缩至 {}'.format(output))

双击6666双击运行试试看效果

image.png

相关文章

  • 写一个带忽略名单的打包压缩脚本

    人生苦短,我用Python 前几天朋友让我把手里的一个Android demo项目打个压缩包发给他,于是我试着直接...

  • Android minify shrink proguard r

    Android gradle脚本打包时如何配置只压缩而不混淆?我们知道gradle打包相关的参数有: minify...

  • 安卓代码混淆

    #忽略警告 不忽略可能打包不成功 -ignorewarnings #不要压缩(这个必须,因为开启混淆的时候 默认 ...

  • shell命令整理(七)

    打包压缩 window打包压缩工具: linux打包压缩工具: 打包 解包 案例 压缩 解压缩 案例 打包压缩一起...

  • Linux压缩打包day15

    1.文件打包与压缩2.gzip打包与压缩3.zip打包与压缩4.tar打包与压缩 一、文件打包与压缩 1.什么是文...

  • Android自动化打包流程

    写的一个Python打包脚本,梳理一下具体流程:

  • 第十四天 压缩 打包

    今日内容: 1.文件打包与压缩 2.gzip打包与压缩 3.zip打包与压缩 4.tar打包与压缩 一.文件打包与...

  • Framework打包脚本

    打包脚本 上面是一个shell脚本,大家执行 sh ***.sh 就可以了. 在写脚本的时候遇到一个问题,早期我们...

  • Linux运维教程4-打包压缩、别名管理

    打包压缩、别名管理 1.打包压缩 Ⅰ.为什么要打包压缩: 整体上传也是可以,打包压缩速度更快 有时候备份项目文件,...

  • Linux基础命令四

    一、打包解包压缩解压先关命令 zip打包解包压缩解压 tar打包解包压缩解压 -z 压缩,解压 -c 创建文件 -...

网友评论

      本文标题:写一个带忽略名单的打包压缩脚本

      本文链接:https://www.haomeiwen.com/subject/pqtxaxtx.html