文章概述
- 解压代码
- zipfile模块简介
解压代码
根据文章python解压压缩包的几种方法
中zip解压的代码,改装的。
- 添加了random目录,生成解压文件编号,确保判断文件不重名。
- 添加了try异常处理。
- 利用了函数的递归,函数内部调用函数。
- 利用main函数,调用函数,确保模块被调用时候,不执行。
# 导入zipfile和os模块,random模块为了生成随机数
# 来合成解压后文件的名字
import zipfile
import os
import random
# 定义un_zip函数,传入参数file_name,就是zip包所在的路径
def un_zip(file_name):
"""unzip zip file"""
# 生成0到1000的随机数,包含0和1000
num_random=str(random.randint(0,1000))
# 解压文件,创建一个zip_file对象
zip_file = zipfile.ZipFile(file_name)
# try保证如果文件名包含[0,1000]的标号,就报错,提示查看。
# 比较好的方式验证,是将写入num_random=str(random.randint(0,1)),两次调用之后,就会显示文件名重复。
try:
# if 判断如果文件名存在,就继续调用函数,重新生成num_random合成文件名
#os.path.isdir判断是否存在
if os.path.isdir(file_name + "_files_"+num_random):
un_zip(file_name)
# 如果不存在file_name_files_random的文件就创建该文件
else:
# os.mkdir创建文件,其实可以省略这一步骤,下一步提取时再创建
os.mkdir(file_name + "_files_"+num_random)
# namelist()获取zip文档内所有文件的名称列表。
for names in zip_file.namelist():
# 将zip文档内的指定文件解压到当前目录
zip_file.extract(names,"_files_"+num_random)
except Exception as result:
print("文件名重复,报错:\n%s\n请查看文件是否已解压"%result)
# 调用函数,传入参数
if __name__ == '__main__':
un_zip("D:\\pythonProject\\ICA_unittest\\result\\a4ccf95f50ca47ae95fecb52c6594eb0.zip")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
zipfile模块简介
参照文章python3中zipfile模块的常用方法
1、class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
zip_file = zipfile.ZipFile(file_name)
- 1
创建一个zip_file对象,表示一个zip文件。参数file_name表示文件的路径或类文件对象(file-like object);参数mode指示打开zip文件的模式,
默认值为’r’,表示读已经存在的zip文件,也可以为’w’或’a’,’w’表示新建一个zip文档或覆盖一个已经存在的zip文档,
2、ZipFile还提供了如下常用的方法和属性:
- ZipFile.namelist()
获取zip文档内所有文件的名称列表。
- ZipFile.extract(member[, path[, pwd]])
将zip文档内的指定文件解压到当前目录。参数member指定要解压的文件名称或对应的ZipInfo对象;参数path指定了解析文件保存的文件夹;
参数pwd为解压密码。