폴더 정보 추출하기 목적
회사에서는 내부 파일서버를 운영하고 있음
파일서버에 대한 정보로 뭔가 의미있는 데이터를 추출하고 싶음
각 부서별로 대략적인 사용량을 확인하여, 어느 부서가 업무를 수행하면서 파일을 많이 생성하는지, 파일서버를 잘 활용하는지, 부서 업무량을 간접적으로 확인할 수 있는지 간접적으로 파악할 수 있을 것이라고 생각되어짐
부서별 폴더의 폴더명, 사용량(사용용량), 파일개수, 최종수정일자를 추출할 수 있다면 어느 정도 의미있는 데이터 추출이 가능할 것이라고 판단됨
폴더 정보 추출하기 파이썬 코드
필자는 아주 기초적인 수준의 파이썬만 할 줄 알고, 현업에서 복잡하게 응용하여 사용해 본 적이 딱히 없음
요즘은 생성형 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파일을 스케줄링하여 누적된 데이터를 가지고 의미있는 데이터를 뽑아보자.