stat
— 解釋 stat()
結果¶
原始碼: Lib/stat.py
stat
模組定義了用於解釋 os.stat()
、 os.fstat()
和 os.lstat()
(如果存在)結果的常量和函式。 有關 stat()
、fstat()
和 lstat()
呼叫的完整詳細資訊,請查閱你係統的文件。
在 3.4 版本中更改: stat 模組由 C 實現支援。
stat
模組定義了以下用於測試特定檔案型別的函式
- stat.S_ISDIR(mode)¶
如果 mode 來自目錄,則返回非零值。
- stat.S_ISCHR(mode)¶
如果 mode 來自字元特殊裝置檔案,則返回非零值。
- stat.S_ISBLK(mode)¶
如果 mode 來自塊特殊裝置檔案,則返回非零值。
- stat.S_ISREG(mode)¶
如果 mode 來自普通檔案,則返回非零值。
- stat.S_ISFIFO(mode)¶
如果 mode 來自 FIFO(命名管道),則返回非零值。
- stat.S_ISLNK(mode)¶
如果 mode 來自符號連結,則返回非零值。
- stat.S_ISSOCK(mode)¶
如果 mode 來自套接字,則返回非零值。
- stat.S_ISDOOR(mode)¶
如果 mode 來自門,則返回非零值。
3.4 版本中新增。
- stat.S_ISPORT(mode)¶
如果 mode 來自事件埠,則返回非零值。
3.4 版本中新增。
- stat.S_ISWHT(mode)¶
如果 mode 來自白化檔案,則返回非零值。
3.4 版本中新增。
定義了兩個額外的函式來更通用地操作檔案的模式
- stat.S_IMODE(mode)¶
返回檔案的 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¶
白化檔案。
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
成員進行比較。這些是眾所周知的常量,但不是詳盡的列表。