Python os.fstatvfs() 方法



Python OS 模块的 fstatvfs() 方法用于检索有关包含与相应文件描述符关联的文件的文件系统的信息。

当我们使用有效的文件描述符调用此方法时,它会在与该文件描述符关联的路径上执行 “statvfs()” 系统调用。该方法返回类 “os.statvfs_result” 的对象,其中包含表示有关文件系统的各种详细信息的属性。下面列出了这些 -

  • f_bsize − 文件系统块大小
  • f_frsize − 片段大小
  • f_blocks − 以 f_frsize 单位表示的 fs 大小
  • f_bfree − 免费块
  • f_bavail − 非 root 的空闲块
  • f_files − inode
  • f_ffree − 空闲 inode
  • f_favail − 非根的空闲 inode
  • f_fsid − 文件系统 ID
  • f_flag − 挂载标志
  • f_namemax − 最大文件名长度

语法

Python os.fstatvfs() 方法的语法如下 -


 os.fstatvfs(fd)

参数

Python os.fstatvfs() 方法接受单个参数 -

  • fd − 这是要为其返回系统信息的文件描述符。

返回值

Python os.fstatvfs() 方法返回有关文件系统的信息。

如果我们将文件描述符作为参数值传递给 fstatvfs() 方法,它将以 “os.statvfs_result” 对象的形式返回文件系统信息,如以下示例所示。


#!/usr/bin/python
import os, sys

# Open a file
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )

# Now get 	the touple
info = os.fstatvfs(fd)
print ("File Info :", info)

# Close opened file
os.close( fd)
print("File closed successfully!!")

当我们运行上述程序时,它会产生以下结果——

File Info : os.statvfs_result(f_bsize=4096, f_frsize=4096,
f_blocks=6276673, f_bfree=3002417, f_bavail=2677246,
f_files=1605632, f_ffree=1375154, f_favail=1375154, f_flag=4096, f_namemax=255)

File closed successfully!!

在下面的示例中,我们将 “os.statvfs_result” 对象的两个名为 “f_namemax” 和 “f_bfree” 的 atrributs 传递给 fstatvfs() 方法。这将显示 Maximum filename length (最大文件名长度) 和 Free blocks (免费块)。


#!/usr/bin/python
import os, sys

# Open a file
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )
info = os.fstatvfs(fd)

# Now get maximum filename length
print ("Maximum filename length :%d" % info.f_namemax)

# Now get free blocks
print ("Free blocks :%d" % info.f_bfree)

# Close opened file
os.close( fd)
print("File closed successfully!!")

当我们执行上述代码时,它将显示以下输出 -

Maximum filename length :255
Free blocks :3002417
File closed successfully!!