stat
— 解釋 stat()
結果¶
原始碼: Lib/stat.py
stat
模組定義了用於解釋 os.stat()
、os.fstat()
和 os.lstat()
結果(如果存在)的常量和函式。有關 stat()
、fstat()
和 lstat()
呼叫的完整詳細資訊,請查閱您系統的文件。
版本 3.4 中的變化: stat 模組由 C 實現支援。
stat
模組定義了以下函式來測試特定檔案型別:
- stat.S_ISDIR(mode)¶
如果模式來自目錄,則返回非零值。
- stat.S_ISCHR(mode)¶
如果模式來自字元特殊裝置檔案,則返回非零值。
- stat.S_ISBLK(mode)¶
如果模式來自塊特殊裝置檔案,則返回非零值。
- stat.S_ISREG(mode)¶
如果模式來自常規檔案,則返回非零值。
- stat.S_ISFIFO(mode)¶
如果模式來自 FIFO(命名管道),則返回非零值。
- stat.S_ISLNK(mode)¶
如果模式來自符號連結,則返回非零值。
- stat.S_ISSOCK(mode)¶
如果模式來自套接字,則返回非零值。
- stat.S_ISDOOR(mode)¶
如果模式來自門檔案,則返回非零值。
在 3.4 版本加入。
- stat.S_ISPORT(mode)¶
如果模式來自事件埠,則返回非零值。
在 3.4 版本加入。
- stat.S_ISWHT(mode)¶
如果模式來自 whiteout 檔案,則返回非零值。
在 3.4 版本加入。
定義了兩個附加函式,用於對檔案模式進行更通用的操作:
- stat.S_IMODE(mode)¶
返回檔案模式中可由
os.chmod()
設定的部分——即檔案的許可權位,加上粘滯位、設定組 ID 和設定使用者 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 ”的字串。
在 3.3 版本加入。
以下所有變數都是 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¶
門檔案。
在 3.4 版本加入。
- stat.S_IFPORT¶
事件埠。
在 3.4 版本加入。
- stat.S_IFWHT¶
Whiteout 檔案。
在 3.4 版本加入。
以下標誌也可用於 os.chmod()
的 mode 引數
- stat.S_ISUID¶
設定 UID 位。
- stat.S_ISGID¶
設定組 ID 位。此位有幾個特殊用途。對於目錄,它表示該目錄將使用 BSD 語義:在那裡建立的檔案從目錄繼承其組 ID,而不是從建立程序的有效組 ID 繼承,並且在那裡建立的目錄也將設定
S_ISGID
位。對於未設定組執行位(S_IXGRP
)的檔案,設定組 ID 位表示強制檔案/記錄鎖定(另請參閱S_ENFMT
)。
- stat.S_ISVTX¶
粘滯位。當此位在目錄上設定時,表示該目錄中的檔案只能由檔案所有者、目錄所有者或特權程序重新命名或刪除。
- 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¶
其他使用者有執行許可權。
以下標誌可用於 os.chflags()
的 flags 引數。
- stat.UF_SETTABLE¶
所有使用者可設定的標誌。
在 3.13 版本加入。
- stat.UF_NODUMP¶
不轉儲檔案。
- stat.UF_IMMUTABLE¶
檔案不可更改。
- stat.UF_APPEND¶
檔案只能追加。
- stat.UF_OPAQUE¶
當透過聯合棧檢視時,目錄是不透明的。
- stat.UF_NOUNLINK¶
檔案不可重新命名或刪除。
- stat.UF_COMPRESSED¶
檔案以壓縮形式儲存 (macOS 10.6+)。
- stat.UF_TRACKED¶
用於處理文件 ID (macOS)
在 3.13 版本加入。
- stat.UF_DATAVAULT¶
檔案需要讀取或寫入的授權 (macOS 10.13+)
在 3.13 版本加入。
- stat.UF_HIDDEN¶
檔案不應在 GUI 中顯示 (macOS 10.5+)。
- stat.SF_SETTABLE¶
所有超級使用者可更改的標誌。
在 3.13 版本加入。
- stat.SF_ARCHIVED¶
檔案可以歸檔。
- stat.SF_IMMUTABLE¶
檔案不可更改。
- stat.SF_APPEND¶
檔案只能追加。
- stat.SF_RESTRICTED¶
檔案需要授權才能寫入 (macOS 10.13+)
在 3.13 版本加入。
- stat.SF_NOUNLINK¶
檔案不可重新命名或刪除。
- stat.SF_SNAPSHOT¶
檔案是一個快照檔案。
- stat.SF_FIRMLINK¶
檔案是一個硬連結 (macOS 10.15+)
在 3.13 版本加入。
- stat.SF_DATALESS¶
檔案是一個無資料物件 (macOS 10.15+)
在 3.13 版本加入。
有關更多資訊,請參閱 *BSD 或 macOS 系統的手冊頁 chflags(2)。
在 Windows 上,以下檔案屬性常量可用於測試 os.stat()
返回的 st_file_attributes
成員中的位。有關這些常量的含義的更多詳細資訊,請參閱 Windows API 文件。
- 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¶
在 3.5 版本加入。
在 Windows 上,以下常量可用於與 os.lstat()
返回的 st_reparse_tag
成員進行比較。這些是眾所周知的常量,但並非詳盡列表。