본문 바로가기

라이브러리

파이썬(Python) stat 사용법 정리

stat 라이브러리는 파일 및 디렉토리의 파일 권한 및 메타 데이터를 가져오고 설정하는 데 사용됩니다. 이 라이브러리는 파일 및 디렉토리의 소유자, 그룹, 권한 및 변경 시간과 같은 정보를 제공합니다. 이를 통해 파일 및 디렉토리의 권한 및 다른 속성을 수정하거나 확인할 수 있습니다.

아래는 stat 라이브러리의 주요 함수와 사용 예시입니다.


1. os.stat()

os.stat() 함수는 파일 또는 디렉토리의 상태 정보를 얻습니다. 이 함수는 파일 이름을 인수로 받고, os.stat_result 클래스의 인스턴스를 반환합니다.

import os

file_info = os.stat('/path/to/file')
print(file_info.st_size)  # 파일 크기 출력

2. os.chmod()


os.chmod() 함수를 사용하여 파일 또는 디렉토리의 권한을 변경할 수 있습니다. 이 함수는 파일 이름과 새 권한 모드를 나타내는 숫자를 인수로 받습니다.

import os

# 권한 모드를 777로 변경
os.chmod('/path/to/file', 0o777)

3. os.chown()


os.chown() 함수를 사용하여 파일 또는 디렉토리의 소유자와 그룹을 변경할 수 있습니다. 이 함수는 파일 이름, 소유자 ID 및 그룹 ID를 나타내는 숫자를 인수로 받습니다.

import os

# 파일의 소유자와 그룹을 'user'와 'group'으로 변경
uid = pwd.getpwnam('user').pw_uid
gid = grp.getgrnam('group').gr_gid
os.chown('/path/to/file', uid, gid)


4. os.utime()


os.utime() 함수를 사용하여 파일 또는 디렉토리의 수정 시간을 변경할 수 있습니다. 이 함수는 파일 이름과 시간을 나타내는 숫자의 튜플을 인수로 받습니다.

import os
import time

# 파일의 수정 시간을 현재 시간으로 변경
now = time.time()
os.utime('/path/to/file', (now, now))

6. stat.S_ISDIR()

stat.S_ISDIR() 함수는 파일이 디렉토리인지 여부를 확인합니다. 이 함수는 st_mode 속성을 인수로 받고, 파일이 디렉토리인 경우 True를 반환합니다.

import os
import stat

file_info = os.stat('/path/to/file')
if stat.S_ISDIR(file_info.st_mode):
    print('This is a directory.')
else:
    print('This is not a directory.')


7. stat.S_ISREG()

stat.S_ISREG() 함수는 파일이 일반 파일인지 여부를 확인합니다. 이 함수는 st_mode 속성을 인수로 받고, 파일이 일반 파일인 경우 True를 반환합니다.

import os
import stat

file_info = os.stat('/path/to/file')
if stat.S_ISREG(file_info.st_mode):
    print('This is a regular file.')
else:
    print('This is not a regular file.')


8. stat.S_ISLNK()


stat.S_ISLNK() 함수는 파일이 심볼릭 링크인지 여부를 확인합니다. 이 함수는 st_mode 속성을 인수로 받고, 파일이 심볼릭 링크인 경우 True를 반환합니다.

import os
import stat

file_info = os.lstat('/path/to/file')
if stat.S_ISLNK(file_info.st_mode):
    print('This is a symbolic link.')
else:
    print('This is not a symbolic link.')


8. stat.S_IMODE()

stat.S_IMODE() 함수는 권한 모드에서 파일 권한 부분을 가져옵니다. 이 함수는 st_mode 속성을 인수로 받고, 권한 부분을 나타내는 숫자를 반환합니다.

import os
import stat

file_info = os.stat('/path/to/file')
mode = stat.S_IMODE(file_info.st_mode)
print(oct(mode))  # 파일 권한 부분을 8진수로 출력

9. os.stat_result 클래스의 속성

1) st_mode : 파일 모드를 나타내는 비트 마스크입니다.
2) st_ino : 파일의 inode 번호입니다.
3) st_dev : 파일이 속한 파일 시스템의 디바이스 번호입니다.
4) st_nlink : 파일에 대한 하드 링크의 수입니다.
5) st_uid : 파일 소유자의 사용자 ID입니다.
6) st_gid : 파일 소유 그룹의 그룹 ID입니다.
7) st_size : 파일 크기 (바이트)입니다.
8) st_atime : 파일에 마지막으로 액세스한 시간입니다.
9) st_mtime : 파일의 내용이 마지막으로 수정된 시간입니다.
10) st_ctime : 파일의 메타 데이터가 마지막으로 변경된 시간입니다.
11) st_blocks : 파일에 할당된 블록 수입니다.
12) st_blksize : 파일 시스템에서 사용되는 블록 크기입니다.
13) st_rdev : 파일이 속한 특수 파일의 디바이스 번호입니다.