• zipfile模块——读取(查看)zip压缩文件


    import zipfile

    exampleZip = zipfile.ZipFile('C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2).zip')

    for zip_file in exampleZip.namelist():
    try:
    zip_file = zip_file.encode('cp437').decode('gbk')
    except:
    zip_file = zip_file.encode('utf-8').decode('utf-8')
    print(zip_file)

    exampleZip.close();
    Python3中zipfile模块文件名乱码问题
    inux下zip文件乱码已经是一个常见问题了,再加上python想不遇到乱码问题都难。 在zipfile.ZipFile中获得的filename有中日文则很大可能是乱码,这是因为 在zip标准中,对文件名的 encoding 用的不是 unicode,而可能是各种软件根据系统的默认字符集来采用(此为猜测),而zipfile中根据文件 flag 检测的时候,只支持 cp437 和 utf
    -8。 具体zipfile模块中的源代码如下 if flags & 0x800: # UTF-8 file names extension filename = filename.decode('utf-8') else: # Historical ZIP filename encoding filename = filename.decode('cp437') 可见编码被正确识别为utf8时的情况外,都会被识别并decode为cp437编码,但如果实际是gbk等其他编码时就变为乱码了。所以解决的方法在于被decode为cp437后重新再手动转为正确的编码。具体代码如下: #这里是在ZipFile.infolist()方法获得的info中取得filename name = info.filename try: #使用cp437对文件名进行解码还原 name = name.encode('cp437') #win下一般使用的是gbk编码 name = name.decode("gbk") except: #如果已被正确识别为utf8编码时则不需再编码 pass

    执行结果:

    新建文件夹1/
    新建文件夹1/新建文件夹/
    新建文件夹1/新建文本文档 (2).txt
    新建文件夹1/新建文本文档.txt
    新建文本文档1.txt

    ====================================================================================================

    import zipfile
    
    exampleZip = zipfile.ZipFile('C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2).zip')
    
    print(exampleZip.namelist())
    
    for zip_file in exampleZip.namelist():
        try:
            zip_file = zip_file.encode('cp437').decode('gbk')
        except:
            zip_file = zip_file.encode('utf-8').decode('utf-8')
        print(zip_file)
    
    
    print(exampleZip.getinfo('11.txt'))   #获取某个文件的详细信息的方法
    
    
    xx = exampleZip.getinfo('11.txt')
    
    print(xx.filename)   #代表文件名字
    print(xx.file_size)   #代表原文件的大小
    print(xx.compress_size)  #代表压缩后文件的大小
    
    
    exampleZip.close()

    执行结果:

    ['11/', '11/2/', '11/22.txt', '11/222.txt', '11.txt']
    11/
    11/2/
    11/22.txt
    11/222.txt
    11.txt
    <ZipInfo filename='11.txt' external_attr=0x20 file_size=0>
    11.txt
    0

  • 相关阅读:
    搭建App主流框架_纯代码搭建(OC)
    UIApplication,UIWindow,UIViewController,UIView(layer)
    插件类
    VIEWCONTROLLER的启动流程
    UIView你知道多少
    分析UIWindow
    创建控制器的3种方式、深入了解view的创建和加载顺序
    UIViewController的生命周期及iOS程序执行顺序
    ViewController加载顺序与self.view
    GCD
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12380891.html
Copyright © 2020-2023  润新知