Python os.fstatvfs() Method
The fstatvfs() method of Python OS module is used to retrieve information about the file system containing the file associated with the respective file descriptor.
When we invoke this method with a valid file descriptor, it performs a "statvfs()" system call on the path associated with that file descriptor. The method returns an object of class "os.statvfs_result", which contains attributes representing various details about the file system. Those are listed below −
f_bsize − file system block size
f_frsize − fragment size
f_blocks − size of fs in f_frsize units
f_bfree − free blocks
f_bavail − free blocks for non-root
f_files − inodes
f_ffree − free inodes
f_favail − free inodes for non-root
f_fsid − file system ID
f_flag − mount flags
f_namemax − maximum filename length
Syntax
The syntax for Python os.fstatvfs() method is as follows −
os.fstatvfs(fd)
Parameters
The Python os.fstatvfs() method accepts a single parameter −
fd − This is the file descriptor for which system information is to be returned.
Return Value
The Python os.fstatvfs() method returns information about the file system.
Example
If we pass the file descriptor to the fstatvfs() method as a parameter value, it will return the file system information in the form of an "os.statvfs_result" object as illustrated in the below example.
#!/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!!")
When we run above program, it produces following result −
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!!
Example
In the following example, we are passing two atrributes named "f_namemax" and "f_bfree" of "os.statvfs_result" object to fstatvfs() method. This will display the Maximum filename length and 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!!")
When we execute the above code, it will display the following output −
Maximum filename length :255 Free blocks :3002417 File closed successfully!!