파일의 상태(stat) 정보를 조회하려면 os 모듈의 stat() 함수를 사용하면 됩니다. 이 함수는 지정된 경로에 대해 stat 시스템 콜을 수행하여 파일의 다양한 메타데이터를 반환합니다.
import os
st = os.stat("file.dat")
os.stat()은 파일 경로를 인자로 받아 다음과 같이 10개의 요소로 구성된 튜플을 반환합니다.
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)
각 요소의 의미는 다음과 같습니다.
- mode: 파일 권한 및 파일 종류 정보
- ino: inode 번호
- dev: 파일이 위치한 장치(device) ID
- nlink: 하드 링크 수
- uid / gid: 파일 소유자의 사용자 ID와 그룹 ID
- size: 파일 크기(바이트)
- atime / mtime / ctime: 각각 최근 접근 시간, 수정 시간, 메타데이터 변경 시간
이 중 mode 값에 파일 권한 정보가 담겨 있으며, st[0] 또는 st.st_mode로 접근할 수 있습니다.
순수한 권한 마스크만 추출하기
st_mode에는 권한 비트 외에도 파일 종류(일반 파일, 디렉터리, 심볼릭 링크 등)를 나타내는 비트가 함께 포함되어 있습니다. 따라서 순수한 권한 마스크만 얻으려면 stat 모듈의 S_IMODE() 함수를 사용하는 것이 좋습니다.
import os
import stat
st = os.stat("file.dat")
perm_mask = stat.S_IMODE(st.st_mode)
print(oct(perm_mask)) # 예: 0o644
사람이 읽기 쉬운 형태로 출력하기
stat.filemode()를 사용하면 권한을 -rw-r--r--처럼 익숙한 문자열 형식으로 변환할 수 있습니다.
import stat print(stat.filemode(st.st_mode)) # -rw-r--r--
반환된 튜플의 각 항목에 대한 자세한 해석 방법은 effbot.org의 Python Fileinfo 문서에서 확인할 수 있습니다.