폴더 정보 추출하기

» 폴더 정보 추출하기

폴더 정보 추출하기 목적

회사에서는 내부 파일서버를 운영하고 있음

파일서버에 대한 정보로 뭔가 의미있는 데이터를 추출하고 싶음

각 부서별로 대략적인 사용량을 확인하여, 어느 부서가 업무를 수행하면서 파일을 많이 생성하는지, 파일서버를 잘 활용하는지, 부서 업무량을 간접적으로 확인할 수 있는지 간접적으로 파악할 수 있을 것이라고 생각되어짐

부서별 폴더의 폴더명, 사용량(사용용량), 파일개수, 최종수정일자를 추출할 수 있다면 어느 정도 의미있는 데이터 추출이 가능할 것이라고 판단됨

폴더 정보 추출하기 파이썬 코드

필자는 아주 기초적인 수준의 파이썬만 할 줄 알고, 현업에서 복잡하게 응용하여 사용해 본 적이 딱히 없음

요즘은 생성형 AI의 등장으로 직접 코드를 짜는 것보다 짜달라고 하는 것이 더 빠르고 효율적이라 챗GPT에서 부탁하였음

파이썬의 os, datetime, csv 모듈을 활용함

폴더 정보를 파싱한 후 오늘 날짜가 적힌 csv파일로 추출해 냄

import os
import datetime
import csv

def get_folder_details_to_csv(path):
    # 오늘 날짜를 'YYYYMMDD' 형식으로 가져오기
    today = datetime.date.today().strftime('%Y%m%d')
    # 파일 이름 설정: 'folder_details_YYYYMMDD.csv'
    output_csv_path = f'folder_details_{today}.csv'
    
    with open(output_csv_path, 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        # 컬럼 헤더 추가
        writer.writerow(['폴더명', '파일 수', '폴더 용량 (MB)', '최종 파일 수정 일자'])
        
        for foldername in os.listdir(path):
            folder_path = os.path.join(path, foldername)
            if os.path.isdir(folder_path):
                file_count = 0
                total_size = 0
                last_modified_dates = []
                for root, dirs, files in os.walk(folder_path):
                    file_count += len(files)
                    total_size += sum(os.path.getsize(os.path.join(root, name)) for name in files)
                    last_modified_dates.extend(os.path.getmtime(os.path.join(root, name)) for name in files)
                
                # 최근 수정 날짜 계산
                if last_modified_dates:
                    latest_modification = max(last_modified_dates)
                    latest_modification_date = datetime.datetime.fromtimestamp(latest_modification).strftime('%Y-%m-%d %H:%M:%S')
                else:
                    latest_modification_date = "파일 없음"
                
                # 바이트를 메가바이트로 변환
                total_size_mb = total_size / (1024 ** 2)
                
                # CSV 파일에 쓰기
                writer.writerow([foldername, file_count, f"{total_size_mb:.2f}", latest_modification_date])

# 사용 예:
# get_folder_details_to_csv('C:/example_path')

결과

아래와 같은 내용의 CSV파일을 추출할 수 있음

csv파일은 “folder_details_날짜.csv” 형태로 떨어짐

파일서버에 해당 .py파일을 스케줄링하여 누적된 데이터를 가지고 의미있는 데이터를 뽑아보자.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤