IT/Python
Python - 파일명에 속한 날짜를 기준으로 정렬
촌초니
2022. 10. 3. 21:14
가끔 파일명에 날짜가 들어있고, 이 날짜를 기준으로 정렬을 해야하는 경우가 있다.
list = [
file.abc.2022-09-05T.01-01.text.txt,
file.abc.2022-05-06T.04-08.text.txt,
file.abc.2022-09-05T.02-08.text.txt,
file.abc.2022-03-01T.01-15.text.txt,
file.abc.2022-03-01T.01-11.text.txt,
file.abc.2022-05-06T.01-08.text.txt
]
위 처럼 파일명 중간에 MM.DD.HH 형식의 날짜가 있고, 이 날짜 기준으로 파일을 정렬해야하는 경우
여러 방법이 있겠지만, 최근에 했던 방법을 기술하자면,
dot(.) 기준으로 나눌때 2번째 항목의 YYYY-MM-DDT 그리고 3번째 항목의 hh-mm을 가지고 시간으로 파싱하여 파일명을 시간순으로 정렬할 수 있다.
시간을 파싱하는 함수 작성
def parse_item(file):
parts = file.split('.')
date_sort = parts[2] + parts[3]
# string을 시간으로 변환
date_time = datetime.strptime(date_sort, "%Y-%m-%dT%H-%M")
return {
"filename": file,
"date": datetime.strftime(date_time, "%Y-%m-%dT%H-%M")
}
위 리스트의 파일명을 하나씩 함수에 담아 정렬 처리
mapping_files = [parse_item(file) for file in list]
sorted_files = sorted(mapping_files, key=lambda x: x["date"])
출력해보자
for sorted_file in sorted_files:
print (sorted_file['filename'])
결과