stat --- Giải thích kết quả stat()

Source code: Lib/stat.py


Mô-đun stat xác định các hằng số và hàm để diễn giải kết quả của os.stat(), os.fstat()os.lstat() (nếu chúng tồn tại). Để biết chi tiết đầy đủ về các lệnh gọi stat(), fstat()lstat(), hãy tham khảo tài liệu dành cho hệ thống của bạn.

Thay đổi trong phiên bản 3.4: Mô-đun stat được hỗ trợ bởi việc triển khai C.

Mô-đun stat xác định các chức năng sau để kiểm tra các loại tệp cụ thể:

stat.S_ISDIR(mode)

Trả về khác 0 nếu chế độ từ một thư mục.

stat.S_ISCHR(mode)

Trả về khác 0 nếu chế độ là từ một tệp thiết bị ký tự đặc biệt.

stat.S_ISBLK(mode)

Trả về giá trị khác 0 nếu chế độ này là từ một tệp thiết bị đặc biệt của khối.

stat.S_ISREG(mode)

Trả về khác 0 nếu chế độ là từ một tệp thông thường.

stat.S_ISFIFO(mode)

Trả về giá trị khác 0 nếu chế độ là từ FIFO (ống có tên).

stat.S_ISLNK(mode)

Trả về khác 0 nếu chế độ đến từ một liên kết tượng trưng.

stat.S_ISSOCK(mode)

Trả về giá trị khác 0 nếu chế độ này đến từ ổ cắm.

stat.S_ISDOOR(mode)

Trả về khác 0 nếu chế độ đến từ một cánh cửa.

Added in version 3.4.

stat.S_ISPORT(mode)

Trả về khác 0 nếu chế độ đến từ một cổng sự kiện.

Added in version 3.4.

stat.S_ISWHT(mode)

Trả về giá trị khác 0 nếu chế độ này bị mất trắng.

Added in version 3.4.

Hai hàm bổ sung được xác định để thao tác tổng quát hơn với chế độ của tệp:

stat.S_IMODE(mode)

Trả về phần chế độ của tệp có thể được đặt bởi os.chmod()--- nghĩa là các bit quyền của tệp, cộng với các bit cố định, set-group-id và set-user-id (trên các hệ thống hỗ trợ chúng).

stat.S_IFMT(mode)

Trả về phần chế độ của tệp mô tả loại tệp (được sử dụng bởi các hàm S_IS*() ở trên).

Thông thường, bạn sẽ sử dụng các hàm os.path.is*() để kiểm tra loại tệp; các chức năng ở đây rất hữu ích khi bạn đang thực hiện nhiều thử nghiệm trên cùng một tệp và muốn tránh chi phí hoạt động của lệnh gọi hệ thống stat() cho mỗi thử nghiệm. Những điều này cũng hữu ích khi kiểm tra thông tin về tệp không được os.path xử lý, chẳng hạn như kiểm tra thiết bị khối và ký tự.

Ví dụ:

nhập hệ điều hành, sys
từ nhập chỉ số *

def walktree(trên cùng, gọi lại):
    '''đi xuống cây thư mục gốc ở trên cùng một cách đệ quy,
       gọi hàm gọi lại cho mỗi tệp thông thường'''

    cho f trong os.listdir (trên cùng):
        tên đường dẫn = os.path.join(top, f)
        chế độ = os.lstat(tên đường dẫn).st_mode
        nếu S_ISDIR (chế độ):
            # It là một thư mục, hãy lặp lại vào đó
            walktree(tên đường dẫn, gọi lại)
        Elif S_ISREG (chế độ):
            # It là một tập tin, hãy gọi hàm gọi lại
            gọi lại (tên đường dẫn)
        khác:
            loại tệp # Unknown, in tin nhắn
            print('Bỏ qua %s' % tên đường dẫn)

def lượt truy cậpfile(tập tin):
    print('ghé thăm', tập tin)

nếu __name__ == '__main__':
    walktree(sys.argv[1],visitfile)

Một chức năng tiện ích bổ sung được cung cấp để chuyển đổi chế độ của tệp thành chuỗi có thể đọc được:

stat.filemode(mode)

Chuyển đổi chế độ của tệp thành một chuỗi có dạng '-rwxrwxrwx'.

Added in version 3.3.

Thay đổi trong phiên bản 3.4: Chức năng này hỗ trợ S_IFDOOR, S_IFPORTS_IFWHT.

Tất cả các biến bên dưới chỉ đơn giản là các chỉ mục tượng trưng trong bộ 10 được trả về bởi os.stat(), os.fstat() hoặc os.lstat().

stat.ST_MODE

Chế độ bảo vệ Inode.

stat.ST_INO

Số inode.

stat.ST_DEV

Inode của thiết bị nằm trên đó.

Số lượng liên kết đến inode.

stat.ST_UID

Id người dùng của chủ sở hữu.

stat.ST_GID

Id nhóm của chủ sở hữu.

stat.ST_SIZE

Kích thước tính bằng byte của một tệp đơn giản; lượng dữ liệu đang chờ trên một số tập tin đặc biệt.

stat.ST_ATIME

Thời gian truy cập lần cuối.

stat.ST_MTIME

Thời gian sửa đổi lần cuối.

stat.ST_CTIME

"ctime" theo báo cáo của hệ điều hành. Trên một số hệ thống (như Unix) là thời điểm thay đổi siêu dữ liệu cuối cùng và trên các hệ thống khác (như Windows), là thời gian tạo (xem tài liệu về nền tảng để biết chi tiết).

Việc giải thích "kích thước tệp" thay đổi tùy theo loại tệp. Đối với các tệp đơn giản, đây là kích thước của tệp tính bằng byte. Đối với FIFO và ổ cắm trong hầu hết các phiên bản Unix (đặc biệt là Linux), "kích thước" là số byte đang chờ đọc tại thời điểm gọi tới os.stat(), os.fstat() hoặc os.lstat(); điều này đôi khi có thể hữu ích, đặc biệt là để thăm dò một trong những tệp đặc biệt này sau khi mở không chặn. Ý nghĩa của trường kích thước đối với các thiết bị ký tự và khối khác khác nhau nhiều hơn, tùy thuộc vào việc triển khai lệnh gọi hệ thống cơ bản.

Các biến bên dưới xác định các cờ được sử dụng trong trường ST_MODE.

Việc sử dụng các chức năng trên dễ mang theo hơn so với việc sử dụng bộ cờ đầu tiên:

stat.S_IFSOCK

Ổ cắm.

stat.S_IFLNK

Liên kết tượng trưng.

stat.S_IFREG

Tập tin thông thường.

stat.S_IFBLK

Chặn thiết bị.

stat.S_IFDIR

Thư mục.

stat.S_IFCHR

Thiết bị nhân vật.

stat.S_IFIFO

FIFO.

stat.S_IFDOOR

Cửa.

Added in version 3.4.

stat.S_IFPORT

Cổng sự kiện.

Added in version 3.4.

stat.S_IFWHT

Mất trắng.

Added in version 3.4.

Ghi chú

S_IFDOOR, S_IFPORT hoặc S_IFWHT được xác định là 0 khi nền tảng không hỗ trợ các loại tệp.

Các cờ sau đây cũng có thể được sử dụng trong đối số mode của os.chmod():

stat.S_ISUID

Đặt bit UID.

stat.S_ISGID

Bit đặt-ID nhóm. Bit này có một số công dụng đặc biệt. Đối với một thư mục, nó chỉ ra rằng ngữ nghĩa BSD sẽ được sử dụng cho thư mục đó: các tệp được tạo ở đó kế thừa ID nhóm của chúng từ thư mục chứ không phải từ ID nhóm hiệu quả của quá trình tạo và các thư mục được tạo ở đó cũng sẽ nhận được tập bit S_ISGID. Đối với tệp không được đặt bit thực thi nhóm (S_IXGRP), bit set-group-ID biểu thị khóa tệp/bản ghi bắt buộc (xem thêm S_ENFMT).

stat.S_ISVTX

Chút dính. Khi bit này được đặt trên một thư mục, điều đó có nghĩa là một tệp trong thư mục đó chỉ có thể được đổi tên hoặc xóa bởi chủ sở hữu tệp, chủ sở hữu thư mục hoặc bởi một quy trình đặc quyền.

stat.S_IRWXU

Mặt nạ cho quyền của chủ sở hữu tập tin.

stat.S_IRUSR

Chủ sở hữu đã có quyền đọc.

stat.S_IWUSR

Chủ sở hữu có quyền viết.

stat.S_IXUSR

Chủ sở hữu có quyền thực thi.

stat.S_IRWXG

Mặt nạ cho quyền nhóm.

stat.S_IRGRP

Nhóm đã có quyền đọc.

stat.S_IWGRP

Nhóm có quyền viết.

stat.S_IXGRP

Nhóm có quyền thực thi.

stat.S_IRWXO

Che dấu quyền cho người khác (không thuộc nhóm).

stat.S_IROTH

Những người khác đã có quyền đọc.

stat.S_IWOTH

Những người khác có quyền viết.

stat.S_IXOTH

Những người khác có quyền thực thi.

stat.S_ENFMT

Thực thi khóa tập tin hệ thống V. Cờ này được chia sẻ với S_ISGID: khóa tệp/bản ghi được thực thi trên các tệp không được đặt bit thực thi nhóm (S_IXGRP).

stat.S_IREAD

Unix V7 đồng nghĩa với S_IRUSR.

stat.S_IWRITE

Unix V7 đồng nghĩa với S_IWUSR.

stat.S_IEXEC

Unix V7 đồng nghĩa với S_IXUSR.

Các cờ sau có thể được sử dụng trong đối số flags của os.chflags():

stat.UF_SETTABLE

Tất cả các cờ có thể cài đặt của người dùng.

Added in version 3.13.

stat.UF_NODUMP

Đừng đổ tập tin.

stat.UF_IMMUTABLE

Tập tin có thể không được thay đổi.

stat.UF_APPEND

Tệp chỉ có thể được thêm vào.

stat.UF_OPAQUE

Thư mục mờ đục khi xem qua ngăn xếp hợp nhất.

Tập tin có thể không được đổi tên hoặc xóa.

stat.UF_COMPRESSED

Tệp được lưu trữ dưới dạng nén (macOS 10.6+).

stat.UF_TRACKED

Được sử dụng để xử lý ID tài liệu (macOS)

Added in version 3.13.

stat.UF_DATAVAULT

Tệp cần có quyền đọc hoặc ghi (macOS 10.13+)

Added in version 3.13.

stat.UF_HIDDEN

Tệp sẽ không được hiển thị trong GUI (macOS 10.5+).

stat.SF_SETTABLE

Tất cả các cờ có thể thay đổi của người dùng siêu

Added in version 3.13.

stat.SF_SUPPORTED

Tất cả các cờ được siêu người dùng hỗ trợ

sẵn có: macOS

Added in version 3.13.

stat.SF_SYNTHETIC

Tất cả các cờ tổng hợp chỉ đọc siêu người dùng

sẵn có: macOS

Added in version 3.13.

stat.SF_ARCHIVED

Tập tin có thể được lưu trữ.

stat.SF_IMMUTABLE

Tập tin có thể không được thay đổi.

stat.SF_APPEND

Tệp chỉ có thể được thêm vào.

stat.SF_RESTRICTED

Tệp cần có quyền ghi vào (macOS 10.13+)

Added in version 3.13.

Tập tin có thể không được đổi tên hoặc xóa.

stat.SF_SNAPSHOT

Tệp này là tệp ảnh chụp nhanh.

Tệp là liên kết vững chắc (macOS 10.15+)

Added in version 3.13.

stat.SF_DATALESS

Tệp là một đối tượng không có dữ liệu (macOS 10.15+)

Added in version 3.13.

Xem trang hướng dẫn hệ thống *BSD hoặc macOS chflags(2) để biết thêm thông tin.

Trên Windows, các hằng số thuộc tính tệp sau đây có sẵn để sử dụng khi kiểm tra các bit trong thành viên st_file_attributes được trả về bởi os.stat(). Xem Windows API documentation để biết thêm chi tiết về ý nghĩa của các hằng số này.

stat.FILE_ATTRIBUTE_ARCHIVE
stat.FILE_ATTRIBUTE_COMPRESSED
stat.FILE_ATTRIBUTE_DEVICE
stat.FILE_ATTRIBUTE_DIRECTORY
stat.FILE_ATTRIBUTE_ENCRYPTED
stat.FILE_ATTRIBUTE_HIDDEN
stat.FILE_ATTRIBUTE_INTEGRITY_STREAM
stat.FILE_ATTRIBUTE_NORMAL
stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
stat.FILE_ATTRIBUTE_NO_SCRUB_DATA
stat.FILE_ATTRIBUTE_OFFLINE
stat.FILE_ATTRIBUTE_READONLY
stat.FILE_ATTRIBUTE_REPARSE_POINT
stat.FILE_ATTRIBUTE_SPARSE_FILE
stat.FILE_ATTRIBUTE_SYSTEM
stat.FILE_ATTRIBUTE_TEMPORARY
stat.FILE_ATTRIBUTE_VIRTUAL

Added in version 3.5.

Trên Windows, các hằng số sau có sẵn để so sánh với thành phần st_reparse_tag được trả về bởi os.lstat(). Đây là những hằng số phổ biến nhưng không phải là danh sách đầy đủ.

stat.IO_REPARSE_TAG_MOUNT_POINT

Added in version 3.8.