stat — stat() 결과 해석
stat — stat() 결과 해석
stat 모듈은 os.stat(), os.fstat(), os.lstat()(존재하는 경우)의 결과를 해석하기 위한 상수와 함수를 정의합니다. stat(), fstat(), lstat() 호출에 대한 완전한 세부 사항은 시스템 문서를 참고하세요.
본문
versionchanged: 3.4에서
stat모듈은 C 구현에 의해 지원됩니다.
stat 모듈은 특정 파일 유형을 테스트하기 위한 다음 함수를 정의합니다.
- stat.S_ISDIR(mode) —
mode가 디렉터리에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISCHR(mode) —
mode가 문자 특수 장치 파일에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISBLK(mode) —
mode가 블록 특수 장치 파일에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISREG(mode) —
mode가 일반 파일에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISFIFO(mode) —
mode가 FIFO(이름 있는 파이프)에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISLNK(mode) —
mode가 심볼릭 링크에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISSOCK(mode) —
mode가 소켓에서 오면 0이 아닌 값을 반환합니다. - stat.S_ISDOOR(mode) —
mode가 door에서 오면 0이 아닌 값을 반환합니다.versionadded: 3.4.
- stat.S_ISPORT(mode) —
mode가 이벤트 포트에서 오면 0이 아닌 값을 반환합니다.versionadded: 3.4.
- stat.S_ISWHT(mode) —
mode가 whiteout에서 오면 0이 아닌 값을 반환합니다.versionadded: 3.4.
파일의 모드를 더 일반적으로 조작하기 위한 두 가지 추가 함수가 정의되어 있습니다.
- stat.S_IMODE(mode) —
os.chmod()로 설정할 수 있는 파일 모드 부분, 즉 파일의 권한 비트에 sticky bit, set-group-id, set-user-id 비트(이를 지원하는 시스템에서)를 더한 것을 반환합니다. - stat.S_IFMT(mode) — 파일 유형을 설명하는 파일 모드 부분(위의
S_IS*()함수가 사용하는)을 반환합니다.
일반적으로 파일 유형을 테스트할 때는 os.path.is*() 함수를 사용해야 합니다. 여기의 함수는 같은 파일에 대해 여러 테스트를 수행하고 각 테스트마다 stat() 시스템 호출의 오버헤드를 피하려 할 때 유용합니다. 또한 os.path가 처리하지 않는 파일 정보(블록 및 문자 장치 테스트와 같은)를 확인할 때도 유용합니다.
예제:
import os, sys
from stat import *
def walktree(top, callback):
'''recursively descend the directory tree rooted at top,
calling the callback function for each regular file'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.lstat(pathname).st_mode
if S_ISDIR(mode):
# It's a directory, recurse into it
walktree(pathname, callback)
elif S_ISREG(mode):
# It's a file, call the callback function
callback(pathname)
else:
# Unknown file type, print a message
print('Skipping %s' % pathname)
def visitfile(file):
print('visiting', file)
if __name__ == '__main__':
walktree(sys.argv[1], visitfile)
파일의 모드를 사람이 읽을 수 있는 문자열로 변환하는 추가 유틸리티 함수가 제공됩니다.
- stat.filemode(mode) — 파일의 모드를
'-rwxrwxrwx'형태의 문자열로 변환합니다.versionadded: 3.3. versionchanged: 3.4에서 이 함수는
S_IFDOOR,S_IFPORT,S_IFWHT를 지원합니다.
아래의 모든 변수는 os.stat(), os.fstat() 또는 os.lstat()가 반환하는 10-튜플에 대한 심볼릭 인덱스입니다.
- stat.ST_MODE — inode 보호 모드.
- stat.ST_INO — inode 번호.
- stat.ST_DEV — inode가 있는 장치.
- stat.ST_NLINK — inode에 대한 링크 수.
- stat.ST_UID — 소유자의 사용자 ID.
- stat.ST_GID — 소유자의 그룹 ID.
- stat.ST_SIZE — 일반 파일의 크기(바이트); 일부 특수 파일에서 대기 중인 데이터 양.
- stat.ST_ATIME — 마지막 접근 시간.
- stat.ST_MTIME — 마지막 수정 시간.
- stat.ST_CTIME — 운영 체제가 보고하는 "ctime". 일부 시스템(예: Unix)에서는 마지막 메타데이터 변경 시간이고, 다른 시스템(예: Windows)에서는 생성 시간입니다(자세한 내용은 플랫폼 문서 참고).
"파일 크기"의 해석은 파일 유형에 따라 달라집니다. 일반 파일의 경우 파일 크기(바이트)입니다. 대부분의 Unix 변형(특히 Linux 포함)에서 FIFO와 소켓의 "크기"는 os.stat(), os.fstat() 또는 os.lstat() 호출 시점에 읽기를 기다리는 바이트 수입니다. 특수 파일 하나를 논블로킹 열기 후 폴링할 때 특히 유용할 수 있습니다. 다른 문자 및 블록 장치의 크기 필드 의미는 기저 시스템 호출 구현에 따라 더 다양합니다.
ST_MODE 필드에서 사용되는 플래그를 아래 변수들이 정의합니다. 위 함수를 사용하는 것이 첫 번째 플래그 집합을 사용하는 것보다 더 이식성이 좋습니다.
- stat.S_IFSOCK — 소켓.
- stat.S_IFLNK — 심볼릭 링크.
- stat.S_IFREG — 일반 파일.
- stat.S_IFBLK — 블록 장치.
- stat.S_IFDIR — 디렉터리.
- stat.S_IFCHR — 문자 장치.
- stat.S_IFIFO — FIFO.
- stat.S_IFDOOR — door.
versionadded: 3.4.
- stat.S_IFPORT — 이벤트 포트.
versionadded: 3.4.
- stat.S_IFWHT — whiteout.
versionadded: 3.4.
Note
S_IFDOOR,S_IFPORT,S_IFWHT는 플랫폼이 해당 파일 유형을 지원하지 않으면 0으로 정의됩니다.
다음 플래그는 os.chmod()의 mode 인자에서도 사용할 수 있습니다.
- stat.S_ISUID — Set UID 비트.
- stat.S_ISGID — Set-group-ID 비트. 이 비트는 몇 가지 특별한 용도가 있습니다. 디렉터리의 경우 BSD 의미론이 사용됨을 나타냅니다: 여기서 생성된 파일은 생성 프로세스의 유효 그룹 ID가 아니라 디렉터리에서 그룹 ID를 상속받고, 여기서 생성된 디렉터리도
S_ISGID비트를 설정받습니다. 그룹 실행 비트(S_IXGRP)가 설정되지 않은 파일의 경우 set-group-ID 비트는 강제 파일/레코드 잠금을 나타냅니다(S_ENFMT도 참고). - stat.S_ISVTX — Sticky bit. 디렉터리에 설정되면 해당 디렉터리의 파일은 파일 소유자, 디렉터리 소유자 또는 권한 있는 프로세스에 의해서만 이름을 바꾸거나 삭제할 수 있음을 의미합니다.
- stat.S_IRWXU — 파일 소유자 권한 마스크.
- stat.S_IRUSR — 소유자 읽기 권한.
- stat.S_IWUSR — 소유자 쓰기 권한.
- stat.S_IXUSR — 소유자 실행 권한.
- stat.S_IRWXG — 그룹 권한 마스크.
- stat.S_IRGRP — 그룹 읽기 권한.
- stat.S_IWGRP — 그룹 쓰기 권한.
- stat.S_IXGRP — 그룹 실행 권한.
- stat.S_IRWXO — 기타(그룹 외) 권한 마스크.
- stat.S_IROTH — 기타 읽기 권한.
- stat.S_IWOTH — 기타 쓰기 권한.
- stat.S_IXOTH — 기타 실행 권한.
- stat.S_ENFMT — System V 파일 잠금 강제. 이 플래그는
S_ISGID와 공유됩니다: 그룹 실행 비트(S_IXGRP)가 설정되지 않은 파일에서 파일/레코드 잠금이 강제됩니다. - stat.S_IREAD —
S_IRUSR의 Unix V7 동의어. - stat.S_IWRITE —
S_IWUSR의 Unix V7 동의어. - stat.S_IEXEC —
S_IXUSR의 Unix V7 동의어.
다음 플래그는 os.chflags()의 flags 인자에서 사용할 수 있습니다.
- stat.UF_SETTABLE — 모든 사용자 설정 가능 플래그.
versionadded: 3.13.
- stat.UF_NODUMP — 파일을 덤프하지 않음.
- stat.UF_IMMUTABLE — 파일을 변경할 수 없음.
- stat.UF_APPEND — 파일에만 추가할 수 있음.
- stat.UF_OPAQUE — union 스택을 통해 볼 때 디렉터리가 불투명함.
- stat.UF_NOUNLINK — 파일 이름을 바꾸거나 삭제할 수 없음.
- stat.UF_COMPRESSED — 파일이 압축되어 저장됨(macOS 10.6+).
- stat.UF_TRACKED — 문서 ID 처리에 사용됨(macOS).
versionadded: 3.13.
- stat.UF_DATAVAULT — 파일이 읽기/쓰기에 entitlement가 필요함(macOS 10.13+).
versionadded: 3.13.
- stat.UF_HIDDEN — 파일을 GUI에 표시하지 않아야 함(macOS 10.5+).
- stat.SF_SETTABLE — 모든 슈퍼유저 변경 가능 플래그.
versionadded: 3.13.
- stat.SF_SUPPORTED — 모든 슈퍼유저 지원 플래그. Availability: macOS.
versionadded: 3.13.
- stat.SF_SYNTHETIC — 모든 슈퍼유저 읽기 전용 합성 플래그. Availability: macOS.
versionadded: 3.13.
- stat.SF_ARCHIVED — 파일이 아카이브될 수 있음.
- stat.SF_IMMUTABLE — 파일을 변경할 수 없음.
- stat.SF_APPEND — 파일에만 추가할 수 있음.
- stat.SF_RESTRICTED — 파일이 쓰기에 entitlement가 필요함(macOS 10.13+).
versionadded: 3.13.
- stat.SF_NOUNLINK — 파일 이름을 바꾸거나 삭제할 수 없음.
- stat.SF_SNAPSHOT — 파일이 스냅샷 파일임.
- stat.SF_FIRMLINK — 파일이 firmlink임(macOS 10.15+).
versionadded: 3.13.
- stat.SF_DATALESS — 파일이 dataless 객체임(macOS 10.15+).
versionadded: 3.13.
더 자세한 내용은 *BSD 또는 macOS 시스템 매뉴얼 페이지 chflags(2)를 참고하세요.
Windows에서는 os.stat()가 반환하는 st_file_attributes 멤버의 비트를 테스트할 때 다음 파일 속성 상수를 사용할 수 있습니다. 이 상수들의 의미에 대한 자세한 내용은 Windows API 문서를 참고하세요.
FILE_ATTRIBUTE_ARCHIVE,FILE_ATTRIBUTE_COMPRESSED,FILE_ATTRIBUTE_DEVICE,FILE_ATTRIBUTE_DIRECTORY,FILE_ATTRIBUTE_ENCRYPTED,FILE_ATTRIBUTE_HIDDEN,FILE_ATTRIBUTE_INTEGRITY_STREAM,FILE_ATTRIBUTE_NORMAL,FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,FILE_ATTRIBUTE_NO_SCRUB_DATA,FILE_ATTRIBUTE_OFFLINE,FILE_ATTRIBUTE_READONLY,FILE_ATTRIBUTE_REPARSE_POINT,FILE_ATTRIBUTE_SPARSE_FILE,FILE_ATTRIBUTE_SYSTEM,FILE_ATTRIBUTE_TEMPORARY,FILE_ATTRIBUTE_VIRTUALversionadded: 3.5.
Windows에서는 os.lstat()가 반환하는 st_reparse_tag 멤버와 비교하기 위해 다음 상수를 사용할 수 있습니다. 이들은 잘 알려진 상수이지만 완전한 목록은 아닙니다.
IO_REPARSE_TAG_SYMLINK,IO_REPARSE_TAG_MOUNT_POINT,IO_REPARSE_TAG_APPEXECLINKversionadded: 3.8.