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

相关文章

来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

30910
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4818
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2527
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

3985
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

2938
来自专栏魂祭心

原 canvas绘制clock

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

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2132
来自专栏落花落雨不落叶

canvas画简单电路图

59811
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2697
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4537

扫码关注云+社区