[혼만파] 1주차 - 폴더 크기 측정 프로그램

gunny·2025년 7월 3일
0

혼만파

목록 보기
1/2
post-thumbnail

Instroduction

새로운 혼공 버전 책이 나옴에 따라서 혼만딥을 갈까 혼만파를 갈까 하다가 역시나 근간인 파이썬을 먼저 가야지하고 선택한 혼만파!

혼공학습단 14기 1주차

혼자 만들면서 공부하는 파이썬
2025.06.30 ~ 2025.07.06

기본 숙제

진도: Chapter 01
기본 숙제(필수): Ch.01(01-1, 01-2) 폴더 크기 측정 결과 화면 캡쳐하기

파이썬 개발 환경을 설정하기 위해 필요한 도구는 파이썬 인터프리터, 비주얼 스튜디오 코드 이다. 이 두개로 이미 사용하고 작성하고 있어서 파이썬 개발 환경 설정하기는 읽기만 하고 샤샥 넘어가기.

소스 저장은 바탕화면에 workspace가 있기 때문에 workspace_python 으로 지정했다.
python 인터프리터에서 python 버전은 책에서는 3.13이 깔려있지만 나는 3.12 버전으로다가 실행.

msg 변수에 "Hello, Python" 넣고 실행하기.
python 파일 실행하는 법 여러가지 따라하기.
본격적으로 폴더 크기 측정 프로그램 작성해보기.

import json
from pathlib import Path

from step_2_1 import OUT_DIR
from step_2_2 import get_total_filesize
from step_2_3 import load_dirnames

OUT_2_4 = OUT_DIR / f"{Path(__file__).stem}.json"


def dump_filesize_from_dirnames():
    dirs = load_dirnames()
    result = {}
    for path_str in dirs:
        path = Path(path_str)
        filesize = get_total_filesize(path, pattern="**/*")
        result[path.as_posix()] = filesize

    with open(OUT_2_4, "w", encoding="utf-8") as fp:
        json.dump(result, fp, ensure_ascii=False, indent=2)


def load_filesize_per_dir() -> dict[str, int]:
    if OUT_2_4.is_file():
        with open(OUT_2_4, encoding="utf-8") as fp:
            return json.load(fp)

    return {}


if __name__ == "__main__":
    dump_filesize_from_dirnames()

01-2. 폴더 크기 측정 프로그램

사용하는 패키지는 pathlib 패키지이다.
간편하고 직관적인 방슥으로 폴더와 파일을 관리할 수 있는 패키지임

json 이라는 JavaScript Object Notation으로 일정한 형식에 따라 사람이 이해할 수 있는 기호로 작성된 데이터 포맷으로 해당 패키지 또한 사용한다.
둘 다 python의 표준 라이브러리에 포함되어 있다.

01-3. 데이터 시각화하기

데이터 분석과 시각화를 위해서 원본 데이터를 원하는 형태로 가공하는 것을 데이터 전처리 라고 하는데, 여기서 데이터 전처리에서는 수집한 데이터에서 필요한 정보를 선별하고 범위를 벗어나는 이상치나 측정하지 못한 결측치 등을 다른 값으로 대체하거나 삭제함으로써 데이터의 품질을 향상 시킬 수 있다.

위에서 작업한 폴더 크기를 시각화하기 위해서 matploitlib 패키지를 사용한다.

위에서 홈 디렉터리의 폴더 크기를 측정하고 폴도의 경로와 크기를 키와 값 쌍으로 딕셔너리에 저장한 뒤에 JSON 형식의 파일로 저장했는데 이를 가로로 긴 막대 그래프로 시각화 하기 위해서 폴더의 크기와 이름을 분리한다.

원본 데이터의 키에서 폴더 이름을, 값에서 폴더 크기를 추출해 각 리스트로 저장한 뒤 두 리스트를 새로운 딕셔너리의 값으로 저장한다.

추가 숙제

추가 숙제(선택): Ch.01(01-3) 폴더 크기 측정 프로그램 시각화 (차트) 결과 화면 캡쳐하기

from pathlib import Path

import matplotlib.pyplot as plt
import numpy as np
from step_2_1 import OUT_DIR
from step_3_1 import load_plot_data

plot_data = load_plot_data()
log_size = np.log(plot_data["size"])
fig, ax = plt.subplots(figsize=(16, 9), dpi=100)
ax.barh(plot_data["stem"], log_size)
ax.grid(True, axis="x")
ax.tick_params(labelbottom=False, length=0, labelsize=20)
fig.set_layout_engine("tight")
fig.savefig(OUT_DIR / f"{Path(__file__).stem}.png")

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글