加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python 3.2 达成zip压缩与解压缩功能

发布时间:2021-11-25 21:30:53 所属栏目:教程 来源:互联网
导读:刚接触Python,用Python3试着写了一个Zip文件的压缩和解压缩脚本,不足之处,欢迎拍砖 功能有限,要按照脚本压缩文件或者文件夹,必须进入文件所在目录,以文件所在目录为工作路径,并且默认压缩后的文件名同于原文件所在的目录名、解压后的文件夹名同于解压
刚接触Python,用Python3试着写了一个Zip文件的压缩和解压缩脚本,不足之处,欢迎拍砖
功能有限,要按照脚本压缩文件或者文件夹,必须进入文件所在目录,以文件所在目录为工作路径,并且默认压缩后的文件名同于原文件所在的目录名、解压后的文件夹名同于解压前的文件名
压缩功能分为压缩所在目录的所有文件跟部分文件(部分文件需要手动添加文件名);解压功能分为解压到当前目录跟解压到指定目录,以下为代码:
 
#!/usr/bin/env python3   
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()  

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读