2017-12-23 30 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

다음은 예입니다. 이렇게하면 사전에있는 확장명으로 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