2017-12-23 17 views
1

私のディレクトリにはたくさんのファイルがあり、各zipファイルのファイル数を取得したい。Pythonを使用してzipファイル内の異なるフォーマットのファイル数をカウントする

file_name file_format 
nature  jpg 2, png 1 

は、これまでのところ、私はコンテンツを印刷するために管理が、私は

前進することができるか分からない:たとえば、私は出力次取得したいのは、zipファイル「nature.zip」のために言って聞かせて
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() 

ありがとうございました

+0

あなたはzipファイルのサブフォルダを再帰する必要がありますか? – MustacheMoses

答えて

2

ここは例です。これは、ジップ内のファイルをディクショナリ内の拡張子でグループ化し、出力を出力します。あなたの場合に必要に応じてこれを適応させてください。

#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 
関連する問題