Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 파일 생성 및 수정 날짜/시간을 확인하는 방법

파일의 생성 시간을 확인하려면 Windows 환경에서는 os.path.getctime(file_path) 함수를 사용하면 됩니다. 하지만 UNIX 계열 시스템(Linux, macOS 등)에서는 이 함수가 생성 시간이 아닌, 파일의 속성이나 내용이 마지막으로 변경된 시간을 반환하기 때문에 그대로 사용할 수 없습니다.

UNIX 기반 시스템에서 실제 생성 시간을 얻으려면 os.stat()이 반환하는 stat 객체의 st_birthtime 속성을 사용해야 합니다. 참고로 Linux에서는 커널 수준에서 생성 시간을 제공하지 않는 경우가 많아, 이 경우 파일 내용이 마지막으로 수정된 시간(st_mtime)으로 대체하는 것이 일반적인 방법입니다.

Windows에서 파일 생성 시간 구하기 (예제)

>>> import os
>>> print(os.path.getctime('my_file'))
1505928271.0689342

위 코드는 에포크(epoch, 1970년 1월 1일 00:00:00 UTC) 이후 경과된 시간을 초 단위로 반환합니다. 사람이 읽기 쉬운 형태로 변환하고 싶다면 datetime.fromtimestamp()를 함께 활용할 수 있습니다.

UNIX/Linux/macOS에서 파일 생성 시간 구하기 (예제)

import os

stat = os.stat(path_to_file)
try:
    print(stat.st_birthtime)
except AttributeError:
    # 아마 Linux 환경일 것입니다.
    # Linux에서는 생성 날짜를 쉽게 구할 방법이 없으므로,
    # 내용이 마지막으로 수정된 시간으로 대체합니다.
    print(stat.st_mtime)

실행 결과

1505928271.0689342

파일 수정 시간(modification time) 구하기

파일의 마지막 수정 시간을 확인하려면 os.path.getmtime(path) 함수를 사용합니다. 이 함수는 Windows, Linux, macOS 등 모든 플랫폼(크로스 플랫폼)에서 지원되므로 별도의 분기 처리 없이 안전하게 사용할 수 있습니다.

예제

>>> import os
>>> print(os.path.getmtime('my_file'))
1505928275.3081832

참고: 타임스탬프를 읽기 쉬운 형식으로 변환하기

반환되는 값은 초 단위의 숫자이므로, 필요에 따라 다음과 같이 변환하여 사용하면 편리합니다.

import os
from datetime import datetime

mtime = os.path.getmtime('my_file')
print(datetime.fromtimestamp(mtime))  # 예: 2017-09-20 22:24:35.308183

정리하면, 생성 시간은 OS별 동작 차이가 있으므로 st_birthtime 사용 여부를 반드시 고려해야 하며, 수정 시간os.path.getmtime() 하나로 모든 플랫폼에서 일관되게 처리할 수 있습니다.