Python 3.2 zip文件压缩与解压缩

发布时间:2020-12-23编辑:脚本学堂
介绍下python 3.2中实现zip文件的压缩与解压缩功能的方法,学习下zipfile模块的用法,有需要的朋友参考下。

python3实现Zip文件的压缩和解压缩脚本
功能有限,要按照脚本压缩文件或文件夹,必须进入文件所在目录,以文件所在目录为工作路径,并且默认压缩后的文件名同于原文件所在的目录名、解压后的文件夹名同于解压前的文件名。

压缩功能分为压缩所在目录的所有文件跟部分文件(部分文件需要手动添加文件名);
解压功能分为解压到当前目录跟解压到指定目录。

代码:
 

复制代码 代码示例:
#!/usr/bin/env python3
#
# www.jb200.com
import os,zipfile  
def Zip(target_dir):  
    target_file=os.path.basename(os.getcwd())+'.zip' 
    zip_opt=input("Will you zip all the files in this dir?(Choose 'n' you should add files by hand)y/n: ")  
    while True:  
        if zip_opt=='y':       #compress all the files in this dir  
            filenames=os.listdir(os.getcwd())    #get the file-list of this dir  
            zipfiles=zipfile.ZipFile(os.path.join(target_dir,target_file),'w',compression=zipfile.ZIP_DEFLATED)  
            for files in filenames:  
                zipfiles.write(files)  
            zipfiles.close()  
            print("Zip finished!")  
            break 
        elif zip_opt=='n':     #compress part of files of this dir  
            filenames=list(input("Please input the files' name you wanna zip:"))  
            zipfiles=zipfile.ZipFile(os.path.join(target_dir,target_file),'w',compression=zipfile.ZIP_DEFLATED)  
            for files in filenames:  
                zipfiles.write(files)  
            zipfiles.close()  
            print("Zip finished!")  
            break 
        else:  
            print("Please in put the character 'y' or 'n'")  
            zip_opt=input("Will you zip all the files in this dir?(Choose 'n' you should add files by hand)y/n: ")  
def Unzip(target_dir):  
    target_name=input("Please input the file you wanna unzip:")  
    zipfiles=zipfile.ZipFile(target_name,'r')  
    zipfiles.extractall(os.path.join(target_dir,os.path.splitext(target_name)[0]))  
    zipfiles.close()  
    print("Unzip finished!")  
def main():  
    opt=input("What are you gonna do?Zip choose 'y',unzip choose 'n'.y/n: ")  
    while True:  
        if opt=='y':  #compress files  
            zip_dir=input("Please input the absdir you wanna put the zip file in:")  
            Zip(zip_dir)  
            break 
        elif opt=='n':  #unzip files  
            unzip_dir=input("Please input the absdir you wanna put the zip file in(Nothing should be done if you wann unzip files in the current dir):")  
            if unzip_dir=='':  
                Unzip(os.getcwd())  
            else:  
                Unzip(unzip_dir)  
            break 
        else:  
            print("Please input the character 'y' or 'n'")  
            opt=input("What are you gonna do?Zip choose 'y',unzip choose 'n'.y/n: ")  
if __name__=='__main__':  
    main()