python实现zip压缩

准备写个备份数据的脚本,虽然linux下有zip等软件,但是python有自带zipfile类库,实现起来并不复杂,权当练手.

#!/usr/bin/python
import os
import zipfile
import sys
import platform
 
global line
if platform.system() == "Windows":
    line = "\\"
else:
    line = "/"
 
def zip_dir(path,spath,zip_obj,zip_file):
    if os.path.exists(path):
        tmp = os.listdir(path + line)
        for i in range(0,len(tmp)):
            nowfile = path+tmp[i]
            if  os.path.isfile(nowfile):
                if nowfile != zip_file:
                    zip_obj.write(nowfile,nowfile[len(spath):len(nowfile)])
                    print("File:%s Is compressed" %(nowfile))
            else:
                zip_dir(nowfile+line,spath,zip_obj,zip_file)
    else:
        print("Directory:%s does not exist" %(path))
        return -1
    return 0
 
if len(sys.argv) > 2:
    zfile = sys.argv[1]
    path = sys.argv[2]+line
    if os.path.exists(os.path.dirname(zfile)) == False:
        zfile =  os.path.join(os.getcwd(), zfile)
    z = zipfile.ZipFile(zfile,"w")
    zip_dir(path,path,z,zfile)
    z.close()
    sys.exit
else:
    print("Parameter Error")
    print("Parameter Is : zip.py [zipfile] [directory]")
    sys.exit

调用参数为 :

[脚本文件]  [目标ZIP文件] [要压缩的目录或者文件]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏每日一篇技术文章

go - os包 彻头彻尾用法使用

os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如...

2246
来自专栏Pythonista

Golang之Mysql事务

2552
来自专栏大内老A

通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用

较之面向最终消费者的网站,企业级Web应用对用户体验的要求要低一些。不过客户对“用户体验”的要求是“与日俱增”的,很多被“惯坏了”的用户已经不能忍受Postba...

2449
来自专栏前端吧啦吧啦

手把手教你全家桶之React(二)

4168
来自专栏从零开始学自动化测试

Selenium2+python自动化24-js处理富文本

前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,...

2785
来自专栏非典型技术宅

ViewController及View的生命周期1. 起因2. Controller的生命周期3. View的生命周期4. 内存警告

1393
来自专栏Lambda

Markdown

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Mark...

2095
来自专栏林德熙的博客

win10 uwp 如何创建修改保存位图 创建保存图片在 Image 控件使用WriteableBitmap 转换通过读写像素转换 CanvasBitmap

在 UWP 使用底层的图像渲染就是使用 Softwarebitmap ,这个类提供直接数据修改,可以使用这个类进行软渲染。实际上 Softwarebitmap ...

2571
来自专栏前端吧啦吧啦

手把手教你全家桶之React(二)

1063
来自专栏佳爷的后花媛

markdown欢迎使用Markdown编辑器写博客

1202

扫码关注云+社区