Python에서 파일 생성 날짜를 기준으로 정렬된 디렉터리 목록을 얻으려면 다음 순서로 처리하면 됩니다.
먼저 os.listdir()을 호출해 디렉터리 내 파일 이름 목록을 가져오고, 각 파일에 대해 os.stat()을 호출해 생성 시간(ctime)을 확인한 뒤, 마지막으로 이 생성 시간을 기준으로 정렬하는 방식입니다.
예제 코드
import os
import time
from stat import S_ISREG, ST_CTIME, ST_MODE
dir_path = '.'
# 디렉터리 내 모든 항목의 전체 경로 가져오기
entries = (os.path.join(dir_path, file_name)
for file_name in os.listdir(dir_path))
# 각 항목에 대한 통계 정보(os.stat) 조회
entries = ((os.stat(path), path) for path in entries)
# 일반 파일만 남기고, 생성 시간(ctime)을 함께 저장
entries = ((stat[ST_CTIME], path)
for stat, path in entries if S_ISREG(stat[ST_MODE]))
# 생성 시간을 기준으로 오름차순 정렬 후 출력
for cdate, path in sorted(entries):
print(time.ctime(cdate), os.path.basename(path))실행 결과
위 코드를 실행하면 생성 날짜가 오래된 파일부터 순서대로 정렬된 목록이 출력됩니다.
Mon Oct 23 18:01:25 2017 sorted_ls.py
참고 사항
ST_CTIME은 운영체제에 따라 의미가 조금 다릅니다. Windows에서는 실제 파일 생성 시간을 나타내지만, Linux나 macOS 같은 유닉스 계열 시스템에서는 일반적으로 메타데이터가 마지막으로 변경된 시간(inode 변경 시간)을 의미합니다. 따라서 플랫폼에 따라 결과가 달라질 수 있다는 점을 유의해야 합니다.
또한 최신순으로 정렬하고 싶다면 sorted(entries, reverse=True)처럼 reverse 옵션을 사용하면 됩니다.