본문 바로가기

Code Note

[Python] 타임스탬프를 이용한 파일명&폴더명 생성 함수

728x90
반응형

파일을 생성하고, 반복 작업을 하다 보면

파일명 중복을 피하기 위해 파일이름에 저장 시각을 포함해야 할 경우가 생깁니다.

 

이 때, 아래의 함수를 짜놓고 미리 사용하면 편리하게 파일명을 규칙적으로 생성할 수 있고,

저장 폴더 경로도 설정하고, 해당 폴더가 기존에 없을 경우 새로 생성 할 수도 있습니다.

 

 

[Python script]

1. MakeFileName(index = 'file', extension = '', hms_option = False)

  • index = 'file' : 파일명 앞에 들어갈 문자열
  • extension = '' : 파일 확장자(ex> csv, txt, png 등)
  • hms_option = False : 파일명에 저장 시각(hhmmss 형태) 포함 여부 지정(False 일경우 yymmdd 정보만 포함)


2. MakeFolder(input_path = 'C:/', index = 'folder_name', timestamp_option = True, hms_option = False)

  • input_path = 'C:/' : 폴더를 생성할 경로 지정
  • index = 'folder_name' : 생성하고자 하는 폴더 이름 지정
  • timestamp_option = True : 폴더명에 저장 일자(yymmdd 형태) 정보 포함 여부 지정
    • 만약 timestamp_option 가 false일 경우 hms_option 입력에 상관없이 아무런 타임스탬프 정보가 폴더명에 포함되지 않음
  • hms_option = False : 폴더명에 저장 시각(hhmmss 형태) 정보 포함 여부 지정 
# Library Import
import os
import datetime
from pathlib import Path

def MakeFileName(index = 'file', extension = '', hms_option = False):
    if hms_option == True : 
        timestamp = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
    else : 
        timestamp = datetime.datetime.now().strftime("%y%m%d")        
    fileName = '{}_{}.{}'.format(index, timestamp, extension)
    print(fileName)
    return fileName

def MakeFolder(input_path = 'C:/', index = 'folder_name', timestamp_option = True, hms_option = False):
    if timestamp_option == True:  
        if hms_option == True : 
            timestamp = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
        else : 
            timestamp = datetime.datetime.now().strftime("%y%m%d")        
        folderName = '{}_{}'.format(index, timestamp)
    else :
        folderName = '{}'.format(index)
    
    path_folder = input_path + folderName
    Path(path_folder).mkdir(parents=True, exist_ok=True)
    os.chdir(path_folder)
    print(path_folder)

 

[실행 결과]

먼저, MakeFileName 함수를 hms_option에 따라 실행한 결과는 다음과 같습니다.

 

MakeFileName(index = 'file', extension = 'csv', hms_option = True)
MakeFileName(index = 'file', extension = 'csv', hms_option = False)
Out[30]: 'file_220128_153638.csv'
Out[31]: 'file_220128.csv'

 

 

MakeFolder 함수를 timestamp_option과 hms_option을 바꾸어가며 실행한 결과는 다음과 같습니다.

timestamp_option가 False인 경우는 hms_option과 무관하게 폴더명에 시간정보가 포함되지 않고, timestamp_option가 True인 경우는 hms_option에 따라 폴더 이름이 달라지는 것을 볼 수 있습니다.

 

MakeFolder(input_path = 'C:/', index = 'folder_name', timestamp_option = False, hms_option = True)
MakeFolder(input_path = 'C:/', index = 'folder_name', timestamp_option = False, hms_option = False)

MakeFolder(input_path = 'C:/', index = 'folder_name', timestamp_option = True, hms_option = True)
MakeFolder(input_path = 'C:/', index = 'folder_name', timestamp_option = True, hms_option = False)

 

C:/folder_name
C:/folder_name

C:/folder_name_220128_153844
C:/folder_name_220128

 

반응형