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

Python으로 파일의 생성 및 수정 날짜·시간을 확인하는 방법

파일의 생성 시간(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을 사용하면 됩니다.