zoukankan      html  css  js  c++  java
  • zipfile和tarfile模块

    zipfile压缩解压缩

    形参 mode 应当为 'r' 来读取一个存在的文件,'w' 来截断并写入新的文件, 'a' 来添加到一个存在的文件。ZipFile 也是一个上下文管理器,也支持with语句。解压时可指定密码,密码必须是bytes类型。

    import zipfile
    
    # 压缩
    z = zipfile.ZipFile('t.zip', 'w')  # t.zip表示压缩后的文件名
    z.write('a.log')  # 要打包压缩的文件
    z.write('data.data')
    z.close()  # 关闭文件
    
    # 解压
    z = zipfile.ZipFile('laxi.zip', 'r')  # 要解压的文件
    z.extract()  # 解压单个文件。
    z.extractall(path='.')  # 解压的路径
    z.close()
    

    使用with语句:

    with zipfile.ZipFile('t1.zip','w') as f:
        f.write('a.txt')
        
    with zipfile.ZipFile('t1.zip','r') as f:
        f.extractall(path='.',pwd='123'.encode('utf-8'))
    

    tarfile压缩解压缩

    import tarfile
    
    # 压缩
    t=tarfile.open('/tmp/egon.tar','w')
    t.add('/test1/a.py',arcname='a.bak')
    t.add('/test1/b.py',arcname='b.bak')
    t.close()
    
    
    # 解压
    t=tarfile.open('/tmp/egon.tar','r')
    t.extractall('/egon')
    t.close()
    

    压缩或解压缩源文件都不会删除。

    案例

    穷举破解一个6位以内的纯数字密码。

    import zipfile
    import time
    
    def extract(path):
        start_time = time.time()
        for p in range(1000000):
            try:
                zfile = zipfile.ZipFile(path,'r')
                zfile.extractall(path='.',pwd=str(p).encode('utf-8'))
                print(f'总耗时{time.time() - start_time}')
                return f'密码为:{p}'
            except Exception:
                print(f'尝试密码{p}')
    
    print(extract('test.zip'))
    
  • 相关阅读:
    N个数求和(PTA)
    集合相似度(PTA)
    方格取数(1)(状压dp入门)
    Drainage Ditches(dinic模板)
    The Accomodation of Students(二分图判断+匈牙利算法)
    Gopher II(匈牙利算法模板)
    Apple Tree(树状数组)
    node.js中的文件系统
    canvas简易画板
    canvas绘制爱心的几种方法
  • 原文地址:https://www.cnblogs.com/ChiRou/p/14269395.html
Copyright © 2011-2022 走看看