Python | os.statvfs 函數
最近更新時間 2020-12-09 12:09:43
os.statvfs 函數在所給的路徑上執行 statvfs() 系統調用。返回值是一個對象,其屬性描述了所給路徑上的文件系統,並且與 statvfs 結構體的成員相對應,即:f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax, f_fsid。
為 f_flag 屬性位定義了兩個模塊級常量:如果存在 ST_RDONLY 位,則文件系統以只讀掛載;如果存在 ST_NOSUID 位,則文件系統禁用或不支持 setuid/setgid 位。
函數定義
os.statvfs(path)
# 函數定義
if sys.platform != 'win32':
def statvfs(path: _FdOrPathType) -> statvfs_result: ... # Unix only
# 返回值 os.statvfs_result 定義
if sys.platform != 'win32':
class statvfs_result: # Unix only
f_bsize: int # It represents the file system block size
f_frsize: int # It represents the fragment size
f_blocks: int # It represents the size of fs in f_frsize units
f_bfree: int # It represents the number of free blocks
f_bavail: int # It represents the number of free blocks for unprivileged users
f_files: int # It represents the number of inodes
f_ffree: int # t represents the number of free inodes
f_favail: int # It represents the number of free inodes for unprivileged users
f_fsid: int # It represents the file system ID
f_flag: int # It represents the mount flags
f_namemax: int # It represents the maximum filename length
兼容性:Unix 系統。
參數
- checkpath - 目錄或文件路徑。
返回值
- checkstatvfs_result - 返回值參見函數定義。
示例1: - 使用 os.statvfs() 函數返回 statvfs() 系統調用對象,比如文件名最大值。
# coding=utf-8
# Python3 代碼
# 講解怎樣使用 os.statvfs() 函數執行 statvfs() 系統調用
# 引入 os 庫
import os
# 文件路徑
path = "foo.txt"
# 執行 statvfs() 系統調用
statvfs = os.statvfs(path)
# 打印文件狀態圖
print(statvfs)
# 打印最大文件名
print("Name Max::", statvfs.f_namemax)
os.statvfs_result(f_bsize=4096, f_frsize=4096, f_blocks=10255672, f_bfree=1571516, f_bavail=1043132, f_files=2621440, f_ffree=1660839, f_favail=1660839, f_flag=4096, f_namemax=255) Name Max:: 255
為基於 GNU/glibc 的系統還定義了額外的模塊級常量。它們是 ST_NODEV (禁止訪問設備專用文件),ST_NOEXEC (禁止執行程序),ST_SYNCHRONOUS (寫入後立即同步),ST_MANDLOCK (允許文件系統上的強制鎖定),ST_WRITE (寫入文件/目錄/符號鏈接),ST_APPEND (僅追加文件),ST_IMMUTABLE (不可變文件),ST_NOATIME (不更新訪問時間),ST_NODIRATIME (不更新目錄訪問時間),ST_RELATIME (相對於 mtime/ctime 更新訪問時間)。