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 条评论
登录 后参与评论

相关文章

来自专栏Java成神之路

SpringCloud_学习_00_资源帖

764
来自专栏Hongten

Crystal Reports 2008(水晶报表) 第一个报表

学习Craystal Reports 2008的时候,光看说明文档,很多东西看了就忘了。

1003
来自专栏AI科技评论

开发 | 在 Mac OS X 装不上 TensorFlow?看了这篇就会装

AI科技评论按:本文原作者Enachan。本文原载于作者的GitHub。译者投稿,雷锋网版权所有。 这个文档说明了如何在 Mac OS X 上安装 Tensor...

3367
来自专栏李智的专栏

网络基础原理

2001:0410:0000:0001:0000:0000:0000:45ff/64 压缩格式:2001:410:0:1::45ff/64(以零开头可以省...

912
来自专栏linux运维学习

linux学习第三十篇:iptables filter表小案例,iptables nat表应用

iptables filter表小案例 案列:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.188.0/2...

1616
来自专栏Samego开发资源

玩玩树莓派之配置Go环境

1343
来自专栏大神带我来搬砖

一步步成为linux大神——什么时候bash -c会创建child shell

在服务器上运行 bash -c "python -m SimpleHTTPServer" 此时另一个窗口运行 pstree -sp 10784 # 107...

3456
来自专栏AI研习社

在 Mac OS X 装不上 TensorFlow?看了这篇就会装

这个文档说明了如何在 Mac OS X 上安装 TensorFlow。(从 1.2 版本开始,在 Mac OS X 上 TensorFlow 不再支持 GPU。...

4096
来自专栏Java编程技术

Dubbo剖析-服务消费端泛化调用

前面我们讲解基于Spring和基于dubbo api方式搭建一个简单的分布式系统时候服务消费端是引入了一个sdk的,这个SDK是个二方包,里面存放了服务提供端提...

722
来自专栏一个会写诗的程序员的博客

Clojure环境安装与QuickStartClojure环境安装与QuickStart

如果你连环境都不想安装,想直接体验一下Clojure的Lisp感觉,你只要保证你联网,就能做到.

574

扫码关注云+社区