매번 코드에서 버전을 output_base_dir = os.path.join('output', f"V_19")이런 식으로 해서 20으로 바꾸고 실행시키고 21로 바꾸고 실행 시키기 싫어서 버전 관리 자동화 함수를 만들어서 프로젝트에 사용하였다
아래 함수는 실행할 때 마다 자동으로 숫자가 올라가게 해서 버전 관리를 자동화 할 수 있게 한 함수이다.
def get_next_version():
import glob
version_folders = glob.glob('output/V_*')
if not version_folders:
return 19 # 시작 버전
versions = []
for folder in version_folders:
try:
version_part = folder.split('V_')[1]
versions.append(int(version_part))
except:
continue
return max(versions) + 1 if versions else 19
version_folders = glob.glob('output/V_*')
- glob.glob() : 패턴 매칭으로 파일/폴더 검색
- output/V_* : output 폴더 안의V_로 시작하는 모든 폴더 찾기
- 결과 예시 : ['output/V_19', 'output/V_20', 'output/V_21']
if not version_folders:
return 19
- 기존 V_ 폴더 없으면 시작 버전인 19 반환
versions = []
for folder in version_folders:
try:
version_part = folder.split('V_')[1]
version.append(int(version_part))
except:
continue
- 각 폴더 이름을 V_로 분할
- 예 : 'output/V_20' -> split('V_')[1] -> '20'
- int()로 숫자 변환 후 리스트에 저장
- 변환 실패 시 (잘못된 형식) 무시하고 계속
return max(versions) + 1 if versions else 19
- 가장 높은 버전 번호에 +1
- 예 : [19,20,21] -> max(versions) = 21 -> 다음 버전 = 22
버전 리스트가 비어있으면 그냥 19 반환
위 함수 실행하면 실행 예시는 아래와 같다
[첫 실행]
output/ (빈 폴더)
→ get_next_version() 실행
→ glob 결과: []
→ 반환값: 19
→ 생성: output/V_19/
[두 번째 실행]
output/V_19/ (기존 폴더)
→ get_next_version() 실행
→ glob 결과: ['output/V_19']
→ 버전 추출: [19]
→ 반환값: 20
→ 생성: output/V_20/
에러처리
try:
version_part = folder.split('V_')[1]
version.append(int(version_part))
except:
continue
- 잘못된 폴더명 (예: V_abc, V_) 무시
- 시스템 안정성 보장
- 올바른 형식의 폴더만 버전 계산에 포함
이렇게 함수를 만들어서 사용하면 수동으로 버전을 고쳐서 사용할 필요가 없어집니다
위 함수를 활용해서 폴더이름, 파일이름( ex: datetime 사용해서 관리 )등등을 관리 할 수 있습니다
'Project' 카테고리의 다른 글
Thanos Call 프로젝트 (0) | 2025.03.16 |
---|---|
심부릉 파트너십 가입1,2 백엔드 구현 (mongoDB) - 사진업로드,주민번호 암호화 미들웨어 구현 (2) | 2024.12.17 |
심부릉 앱 DB 설계 (2) | 2024.12.02 |
심부릉 앱 DB (0) | 2024.11.30 |
심부릉 앱 화면 기획 (0) | 2024.11.30 |