代码之家  ›  专栏  ›  技术社区  ›  edyvedy13

使用Python计算zip文件中不同格式的文件数

  •  2
  • edyvedy13  · 技术社区  · 7 年前

    我的目录中有很多压缩文件,我想得到每个压缩文件的文件数。例如,对于zip文件“nature.zip”,我希望获得以下输出:

    file_name   file_format
    nature      jpg 2, png 1 
    

    到目前为止,我设法打印了内容,但不知道如何才能继续前进

        from zipfile import ZipFile
        import os
        directory = r"C:\Users\Lenovo\data_2"
        for folder, subfolders, files in os.walk(directory):
            for file in files:
                if file.endswith(".zip"):
                    # opening the zip file in READ mode
                    with ZipFile(directory+ '/'+ file, 'r') as zip:
                        # printing all the contents of the zip file
                        zip.printdir()
    

    非常感谢你

    1 回复  |  直到 7 年前
        1
  •  3
  •   SigmaPiEpsilon    7 年前

    这里有一个例子。这将根据字典中的扩展名对ZIP中的文件进行分组,并打印输出。根据您的情况需要进行调整。

    #Filegroup.py
    from zipfile import ZipFile
    from glob import glob
    
    print "file_name","\t","file_format"
    for zips in glob('*.zip'):
        with ZipFile(zips) as zip:
            files = zip.namelist()
            filecounts = {}
            for file in files:
                ext = file.split('.')[-1]
                if ext in filecounts:
                    filecounts[ext] += 1
                else:
                    filecounts[ext] = 1
            print zip.filename,'\t\t',', '.join([' '.join(map(str,elem)) for elem in filecounts.items()])
    

    测试:

    $ zipinfo -1 A.zip
    a.txt
    b.txt
    c.jpg
    k.png
    $ zipinfo -1 B.zip                                                        
    g.md
    h.txt
    e.png
    f.png
    d.jpg
    $ python Filegroup.py 
    file_name       file_format
    A.zip           txt 2, png 1, jpg 1
    B.zip           md 1, txt 1, jpg 1, png 2