파일명 내 날짜 텍스트 기준으로 최신 파일 불러오기

Sangyeon·2022년 12월 9일
0

Python

목록 보기
2/2

Python에서 파일명 내 날짜 텍스트 기준으로 최신 파일 불러오는 방법에 대한 포스팅 입니다.

natsort 패키지 설치

문자열로 된 숫자를 정렬할 시 유용한 natsort 패키지를 설치합니다.
(참고로, natsort = natural sort 를 의미합니다.)

$ pip install natsort

코드

이전 포스팅과 동일하게 data 디렉터리에 아래 파일들이 있고,
가장 최신 파일인 data_210713.csv를 가져오고 싶은데, data_210713.csv파일이 생성된 이후에 data_210701.csv 파일을 수정했다고 가정합니다.

data_210701.csv
data_210707.csv
data_210713.csv

특정 파일명을 지정하지 않아도 data_*.csv 파일 중 파일명 내 날짜 텍스트 기준 최신 파일을 가져오고 싶은 경우의 코드 입니다.(data_*.csv 파일이 반드시 1개는 있다고 가정합니다. 파일이 하나도 없으면 IndexError가 발생하겠네요.)

import glob
from natsort import natsorted

files = glob.glob('data/data_*.csv')
recent_file = natsorted(seq=files, reverse=True)[0]
print(recent_file)

코드 실행 결과, 아래와 같이 파일명 내 날짜 텍스트 기준 최신 파일이 출력되는 것을 확인할 수 있습니다.

data/data_210713.csv

만약 파일명 날짜 포맷이 yyyymmdd 이었는데, 중간에 yymmdd 로 변경하게 된다면, 위 코드 실행 시, yymmdd 숫자보다 yyyymmdd 숫자가 크고, 역순 정렬이므로, 기대와 다르게 yyyymmdd 숫자의 파일명(과거 파일)이 출력될 것입니다.

그런 경우에는 아래와 같이 glob 패턴을 변경하여 yymmdd 날짜 포맷의 파일 리스트를 추출해야겠네요.

files = glob.glob('data/data_' + '[0-9]' * 6 + '.csv')

CI 서버에서 git으로부터 csv 파일들을 최초로 가져올 때에는 파일 쓰기를 하므로 os.path.getmtime를 사용하여 파일 수정시간을 기준으로 최신 파일을 가져오는 것보다는 이 방법이 더 유용하겠습니다.

이렇게 또 알아갑니다..!

Reference

profile
I'm a constant learner.

0개의 댓글