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() và 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() và 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.
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 đó.
- stat.ST_NLINK¶
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.
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êmS_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).
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.
- stat.UF_NOUNLINK¶
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_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.
- stat.SF_NOUNLINK¶
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.
- stat.SF_FIRMLINK¶
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 đủ.