码迷,mamicode.com
首页 > 其他好文 > 详细

zipfile模块

时间:2018-12-07 14:45:36      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:文件   read   odi   pre   str   readline   try   破解   python   

在python中操作zip文件, 基本上都是使用zipfile模块,他可以创建、解压文件,获取zip文件的元数据信息。
我们想要操作一个zip文件,第一步就是初始化ZipFile实例。

 

1、打开test.zip文件。

import zipfile
filename = zipfile.ZipFile(test.zip)

 

2、解压文件

目前我们只是传入一个参数地址,实例化了一个对象,想要解压文件还要是要到extractall方法,
三个参数,path是解压的路径(默认为解压文件所在路径),members是需要解压出来的文件(默认为全部文件),pwd是密码。

filename.extractall(pwd=password.encode(ascii))
或filename.extractall(pwd=str.encode(password))

因为在python3中pwd需要的是byte,所以需要自行解码

 

3、查看压缩文件中的文件列表

假设密码是xyz
filename = zipfile.ZipFile(G:/python/code/test.zip,r)
filename.extractall(pwd=str.encode(xyz))
print(filename.namelist())
[test]

 

4、例子:通过密码字典文件破解压缩文件

import zipfile

#定义使用密码打开文件的函数
def setpass(filename,password):
    try:
        filename.extractall(pwd=str.encode(password))
        return password #如果密码正确,则返回密码
    except Exception as e:
        pass

#定义暴力破解函数
def read_zipfile():
    filename = zipfile.ZipFile(G:/python/code/test.zip,r)    #用zipfile函数的ZipFile类定义压缩文件
    file_pass = G:/python/code/字典-3    #定义字典文件
    with open(file_pass,encoding=utf-8) as file:    #打开字典文件,这里经测试encoding=‘utf-8‘可以不写
        for i in file.readlines():    #读取字典文件中的每一行
            gess=setpass(filename,i.strip(\n))    #调用setpass函数,并传入文件名和密码2个参数,这里注意字典文件中每一行包括1个换行符,所以要去掉,strip(‘/n‘)可以删除i两端的换行符
            if gess:
                print(filename.namelist())
                print(密码是:+i)
                exit(0) #如果密码正确则退出程序,或者写成break也可以
            else:
                print(正在尝试:+i)

if __name__==__main__:
    read_zipfile()

 

zipfile模块

标签:文件   read   odi   pre   str   readline   try   破解   python   

原文地址:https://www.cnblogs.com/dxnui119/p/10082217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!