Python中zipfile模块最最最最简单的例子

用python写的一个简单的压缩文件处理(代码写得要被人打的节奏【bug多多】)

#_*_ encoding=utf-8 _*_

import zipfile
import os


def menu():
    print '''
        [1] 列出所有压缩文件
        [2] 解压指定文件
        [3] 加入压缩文件
        [4] 退出
    '''

def Unzip(zf):
    zf.printdir()
    zname = raw_input('请输入你要解压的文件:')
    if zname not in zf.namelist():
        print '该文件不存在!'
        return None
    date = zf.read(zname)
    '''
    read主要是从压缩包里的文件读取数据
    '''
    TmpFile = open(zname,'w')
    TmpFile.writelines(date)
    TmpFile.close()

def AddZip(zf):
    print '\n'
    for each in os.listdir(os.getcwd()):
        print each
    zname = raw_input('请输入你要添加压缩的文件(当前目录):')
    if zname not in os.listdir(os.getcwd()):
        print '该文件不在当前目录'
        return None
    elif zname in zf.namelist() :
        choose = raw_input('该文件已经存在是否覆盖?[y or n]')
        if choose == 'y':
            pass
        else:
            return None
    try:
        zf.write(os.path.join(os.getcwd(),zname),zname)
        '''
    write(self, filename, arcname=None, compress_type=None)
    filename:欲加入压缩的文件
    arcname:加入压缩包后的文件名
    compress同下
        '''
    except:
        pass

def main():
    choice = 4
   argc = len(os.sys.argv)    #只支持参数载入压缩包。。。
    if argc == 1:
        print '缺少参数!'
        return None
    for i in range(1,argc):
        try:
        '''z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False)
        file指要被打开的压缩包,我这里是test.zip
        mode是指打开的模式
        读是"r", 写入 "w" or 添加 "a"
        跟文件处理差不多 
        compression是指解压缩方式(表示不懂)
        方式有: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib)
        '''
            zFile = zipfile.ZipFile(os.path.join(os.getcwd(),os.sys.argv[i]),'a')       #打开指定压缩包
        except:
            print '不存在文件或者权限不够'
        else:
            menu()
        while True:
            try:
                choice = int(raw_input('%s >'%os.sys.argv[i]))
            except:
                pass
            if choice == 1:
                zFile.printdir()
            elif choice == 2:
                Unzip(zFile)
            elif choice == 3:
                AddZip(zFile)
            else:
                zFile.close()
                break

if __name__ == '__main__':
    main()

运行效果演示(之前弄过了。。)

猜你喜欢

转载自blog.csdn.net/qq_20545625/article/details/50988755