파이썬에서 파일 정보 얻기
Python
//
2024년 05월 30일 작성
파이썬에서 파일의 정보, 예를 들어 파일 사이즈나 수정 일자를 얻는 방법을 알아보자. 여러 방법이 있을 수 있지만 이 글에서는 가장 진보된(?) 형태인 pathlib.Path
클래스를 활용한다.
Path.stat()
stat()
메서드를 활용하면 파일의 메타 정보를 얻을 수 있다.
>>> from pathlib import Path
>>> Path("/Users/seorenn/.zshrc").stat()
os.stat_result(st_mode=33188, st_ino=247065795, st_dev=16777225, st_nlink=1, st_uid=501, st_gid=20, st_size=1699, st_atime=1713253280, st_mtime=1713253242, st_ctime=1713253242)
반환되는 값은 os.stat_result
타입의 값이다. 이 값은 os.stat()
함수의 결과와 완전히 동일하다.
>>> import os
>>> os.stat("/Users/seorenn/.zshrc")
os.stat_result(st_mode=33188, st_ino=247065795, st_dev=16777225, st_nlink=1, st_uid=501, st_gid=20, st_size=1699, st_atime=1713253280, st_mtime=1713253242, st_ctime=1713253242)
둘 중 원하는 것을 사용하면 된다. 단지 Path
는 좀 더 풍부한 기능이 있다는 차이가 있을 뿐이다.
예제: 파일 크기 알아내기
os.stat_result
인스턴스에서 파일 크기는 st_size
를 통해 알 수 있다.
>>> from pathlib import Path
>>> Path("/Users/seorenn/.zshrc").stat().st_size
1699
이 값은 당연하게도 ls -l
등을 통해 알 수 있는 수치와 동일하다.
$ ls -l ~/
...
-rw-r--r-- 1 seorenn staff 1699 Apr 16 16:40 .zshrc
...
단위는 바이트 단위이므로 1000 혹은 1024 단위로 나누어가면 좀 더 인간 친화적(?) 수치를 얻을 수 있다.
다만 파일이 심볼릭 링크 등 실제 파일이 아닐 경우 링크된 파일의 크기가 아닌 경로 전체의 길이 크기를 돌려줄 수도 있으므로 주의하자.
예제: 파일 수정 시간 알아내기
os.stat_result
인스턴스에서 파일 생성 시간은 st_mtime
값을 통해 알 수 있다. 단지 이 값이 UNIX Timestamp 형식으로 표현되어 있어서 사람이 보기엔 그다지 효율적이지 못하다는 문제가 있다.
따라서 좀 더 읽기 편하게 바꾸면 이런 식이다.
>>> from pathlib import Path
>>> from datetime import datetime
>>> datetime.fromtimestamp(Path("/Users/seorenn/.zshrc").stat().st_mtime)
datetime.datetime(2024, 4, 16, 16, 40, 42, 577873)
흔하게 사용하는 datetime
에서 fromtimestamp()
가 지원되서 간단히 변환할 수 있따.