- 积分
- 3638
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-10-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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)
|
|