파일의 생성 시간(creation time)을 확인하려면 운영체제에 따라 사용하는 방법이 다릅니다.
Windows에서는 os.path.getctime(file_path) 함수를 사용하면 파일이 생성된 시간을 얻을 수 있습니다. 하지만 UNIX 계열 시스템(Linux, macOS 등)에서는 이 함수가 파일 생성 시간이 아닌, 파일의 속성이나 내용이 마지막으로 변경된 시간을 반환하기 때문에 주의해야 합니다.
UNIX 기반 시스템에서 실제 생성 시간을 얻으려면 os.stat()이 반환하는 stat 객체의 st_birthtime 속성을 사용해야 합니다.
Windows에서 생성 시간 얻기
>>> import os
>>> print(os.path.getctime('my_file'))
1505928271.0689342
반환되는 값은 에포크(epoch, 1970년 1월 1일 00:00:00 UTC) 이후 경과한 초 단위의 타임스탬프입니다. 사람이 읽기 쉬운 형태로 변환하려면 datetime 모듈을 함께 사용할 수 있습니다.
UNIX 계열 시스템에서 생성 시간 얻기
import os
stat = os.stat(path_to_file)
try:
print(stat.st_birthtime)
except AttributeError:
# 아마 Linux 환경일 것입니다.
# Linux에서는 생성 날짜를 쉽게 구할 수 없으므로,
# 내용이 마지막으로 수정된 시간으로 대체합니다.
print(stat.st_mtime)
실행 결과
1505928271.0689342
참고로 Linux 커널의 일부 파일시스템(ext4 등)은 생성 시간을 저장하지만, Python 표준 라이브러리만으로는 접근하기 어렵습니다. 따라서 위 예제처럼 st_birthtime 속성이 없는 경우 st_mtime(수정 시간)으로 대체 처리하는 것이 안전한 방법입니다.
파일의 수정 시간(modification time) 얻기
파일의 마지막 수정 시간을 확인하려면 os.path.getmtime(path)를 사용하면 됩니다. 이 함수는 Windows와 UNIX 등 모든 플랫폼에서 동일하게 동작하므로 크로스 플랫폼 코드 작성에 적합합니다.
>>> import os
>>> print(os.path.getmtime('my_file'))
1505928275.3081832
타임스탬프를 날짜 형식으로 변환하기
위 함수들이 반환하는 값은 초 단위 숫자이므로, 필요에 따라 다음과 같이 변환하여 사용할 수 있습니다.
import os
from datetime import datetime
ctime = os.path.getctime('my_file')
print(datetime.fromtimestamp(ctime)) # 예: 2017-09-20 23:24:31.068934
정리하면, 생성 시간은 Windows에서는 getctime(), UNIX 계열에서는 st_birthtime을 사용하고, 수정 시간은 어느 플랫폼에서든 getmtime() 또는 st_mtime을 사용하면 됩니다.