본문 바로가기
Python

[Python] 오늘 날짜 기준 년/월/일 디렉토리 생성

by ete-llorona 2022. 12. 27.

오늘 날짜 확인에는 datetime 모듈이 필요하고, 디렉토리 생성에는 os 모듈이 필요하다. 

 

 

 

1. 오늘 날짜 확인

 

 

오늘 날짜 정보는 datetime 모듈에서  today() 함수를 호출해서 구할 수 있다.

(now() 함수도 활용 가능하며 사용법은 동일함) 

 

from datetime import datetime

today = datetime.today()
print(today)  # 2022-12-27 19:26:00.442073
print(type(today)) # <class 'datetime.datetime'>

 

디렉토리 경로를 생성하려면 오늘 날짜 정보를 문자열로 바꿔야 한다. 

strfrime() 함수를 이용해 %Y(4자리수 년도, 2글자는 %y 활용) , %m(월), %d(일) 정보를 추출해서 문자열로 바꿀 수 있다. 

 

dir_name = today.strftime("%Y/%m/%d")
print(dir_name)  # 2022/12/27

 

이제 이 문자열을 활용해서 디렉토리를 생성한다. 

 

 

 

2. 디렉토리 생성 

 

 

os.mkdir과 os.makedirs 로 디렉토리를 생성할 수 있는데,

os.mkdir() 는 폴더 한 개만 생성할 수 있는 반면,

os.makedirs() 는 하위 디렉토리 생성에 필요한 모든 중간 수준 디렉토리를 생성한다. 

그렇기 때문에, 오늘 날짜 기준 디렉토리를 생성하려면 os.mkdir 보다는 os.makedirs 훨씬 편리하다.

파이썬 기초 복습을 위해 os.mkdir(), os.makedirs() 함수의 차이점을 코드로 정리해보자. 

 

import os

os.mkdir("D:/python/") # (1) D:/ 하위에 python 폴더 생성
os.mkdir("D:/python/") # (2) FileExistsError 발생
os.mkdir("D:/python/test1/") # (3) D:/python/ 하위에 test1 폴더 생성
os.mkdir("D:/python/test1/test2/test3") # (4) FileNotFoundError 발생

 

os.mkdir() 을 사용할 경우, (2)번에서는 이미 (1)번에 의해 D:/python/ 경로가 존재하므로 에러가 발생한다.  

(4)번에서는 D:/python/test1/ 하위에 test2 폴더가 없는 상태에서 test3 폴더를 생성하려고 하므로 에러가 발생한다. 

python 폴더를 삭제하고 다시 os.makedirs()로 디렉토리를 생성해보자. 

 

import os

os.makedirs("D:/python/") # (1) D:/ 하위에 python 폴더 생성
os.makedirs("D:/python/") # (2) FileExistsError 발생
os.makedirs("D:/python/", exist_ok=True)
os.makedirs("D:/python/test1/") # (3) D:/python/ 하위에 test1 폴더 생성
os.makedirs("D:/python/test1/test2/test3") # (4) D:/python/test1/test2/test3 경로 생성

 

os.makedirs() 을 사용할 때도 (2)번에서는 이미 D:/python 경로가 존재하므로 에러가 발생한다.

exist_ok=True 옵션을 사용하면, 이미 폴더가 경로 내에 있더라도 FileExistError 에러가 발생하지 않는다. 

반면, (4)번에서는 에러 발생 없이 디렉토리가 정상적으로 생성된다. 

 

 

 

3. 오늘 날짜 기준 년/월/일 디렉토리 생성

 

 

이제 년/월/일 디렉토리를 생성하는 코드를 작성할 수 있다.  

 

import os
from datetime import datetime

today = datetime.now()
dir_name = today.strftime("%Y/%m/%d")
os.makedirs(f"D:/python/{dir_name}", exist_ok=True) # D:/python/2022/12/27 디렉토리 생성

 

댓글