爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6991|回复: 3

[源代码] Python实用源代码之解压缩

[复制链接]

新浪微博达人勋

发表于 2022-2-15 16:50:09 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
平时司空见惯的压缩与解压缩过程,原理还挺深涩的。
网上的教程乱七八糟,你抄我,我抄你,容易被带偏。
今天特地整理一下,力求代码简单实用。

'''
该脚本对“文件或文件夹”进行“压缩”和“解压缩”,采用zip压缩格式

约定:
根据大家的使用习惯,对“文件或文件夹”压缩后的压缩包,都保存在“文件或文件夹”的同级目录下,且名称与“文件或文件夹”同名。
例如,
压缩“D:\待压缩文件夹”,就会生成“D:\待压缩文件夹.zip”
压缩“D:\待压缩文件.xlsx”,就会生成“D:\待压缩文件.zip”

解压时,把zip文件解压到同级同名文件夹内
例如“D:\待解压文件.zip”解压到文件夹“D:\待解压文件”
'''
import os
import shutil
import zipfile

# 压缩文件或文件夹:
# x是要压缩的文件或文件夹
def ZIP(x):
    # 判断是文件还是文件夹:
    if os.path.isfile(x):
        print('待压缩对象是一个文件')
        # 如何确定压缩包的名称?--将x按‘.’分割,将最后一个元素用“zip”替换,再拼回去
        cut=x.split('.') ; cut[-1]='zip' ; x2='.'.join(cut)
        # 开始压缩:
        z=zipfile.ZipFile(x2,'w')
        z.write(x,os.path.basename(x))
        z.close()

    if os.path.isdir(x):
        print('待压缩对象是一个文件夹')
        # 开始压缩:
        shutil.make_archive(x,'zip',root_dir=x,base_dir='./')
    print('****压缩成功****')

# 解压zip文件x
def UNZIP(x):
    # 解压到的目录,只需要从x截掉最后4个字符即可,吼吼:
    z = zipfile.ZipFile(x,'r')
    z.extractall(path=x[0:-4])
    z.close()
    print('****解压成功****')
    # 解压缩的问题:
    # 用7z软件压缩的zip文件,解压后出现中文乱码,
    # 用本脚本程序压缩的zip文件,解压后没有中文乱码。

# 测试部分:
if __name__=="__main__":
    # x=r'C:\Users\xiumu\desktop\空气站数据\数据.xlsx'
    x=r'C:\Users\xiumu\desktop\空气站数据'
    ZIP(x)
    x=r'C:\Users\xiumu\desktop\空气站数据.zip'
    UNZIP(x)






密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-2-15 22:12:49 | 显示全部楼层
实用的帖子,点赞!!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-19 22:40:56 来自手机 | 显示全部楼层
特别好,正在学习,非常有用
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-21 13:07:02 | 显示全部楼层
支持,感谢楼主
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表