파이썬 하위 폴더, 파일 압축하기

정또치·2022년 12월 12일

개발일기

목록 보기
5/13

cvat로 바운딩 박스가 잘 쳐졌는지 확인하기 위해 만든 폴더를 압축하기


폴더 구조는 이렇게 되어 있다.
  • 구황 작물 (입력 폴더)
    • 고구마 (하위 폴더)
      • 고구마튀김 (하위의 하위 폴더)
        - png 각 150개
        - txt 각 150개
      • txt 파일
      • obj.names
      • obj.data

목표는 고구마.zip을 만드는 것이고 고구마 튀김 안에 각 150개의 png와 txt 파일이 존재했다.
고구마 튀김 폴더는 압축하지 않고 고구마.zip에 넣어야 한다.


import zipfile
import os
import argparse
from glob import glob


def make_zip(folders):

    folders = args.dataset # 구황작물

    list_of_folders = glob(folders + '/*') 
    list_of_folders = sorted(list_of_folders)

    for folder in list_of_folders:
        
        signs_folders = glob(folder + '/*')
        for sign_folder in sorted(signs_folders):

            pose_folders = glob(sign_folder + '/*')
            for pose_folder in sorted(pose_folders): # 고구마
                my_zip = zipfile.ZipFile(pose_folder+'.zip', 'a')
                
                os.chdir(pose_folder)
      
                for zip_file in os.listdir(): #zip_file : 고구마튀김, txt 파일, obj.names, obj.data
                    print(zip_file)
                    my_zip.write(zip_file)
                    
                    if(zip_file == 'obj_train_data'): #obj_train_data: 고구마 튀김
                        obj = glob(zip_file + '/*') #고구마 튀김 폴더 내 각 150개의 txt, png
                        for data in obj:
                            my_zip.write(data)
                      

                my_zip.close()
                

    
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Signature Verification')
    # required training parameters
    parser.add_argument('--dataset', '-ds', action='store', type=str, required=True,
                        help='Please mention the database.')


    args = parser.parse_args()

    make_zip(args)
	
profile
ddochi

0개의 댓글