roman10
Get Disk Space in Python–using statvfs
Linux command df is used to report file system disk space usage. A sample output of the df command is as below,
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 5597680 3732772 1580560 71% /
udev 254684 232 254452 1% /dev
none 254684 360 254324 1% /dev/shm
none 254684 96 254588 1% /var/run
none 254684 0 254684 0% /var/lock
none 254684 0 254684 0% /lib/init/rw
/dev/sr0 32780 32780 0 100% /media/cdrom0
Sometimes we want to get similar information in our program. Linux system has a library function called statvfs. Python has a wrapper for this function. It takes an input path and returns a structure with information about the mounted disk containing the input file.
Below is a sample python program,
#!/usr/bin/python
import os
disk = os.statvfs("/var/")
print "preferred file system block size: " + str(disk.f_bsize)
print "fundamental file system block size: " + str(disk.f_frsize)
print "total number of blocks in filesystem: " + str(disk.f_blocks)
print "total number of free blocks: " + str(disk.f_bfree)
print "free blocks available to non-super user: " + str(disk.f_bavail)
print "total number of file nodes: " + str(disk.f_files)
print "total number of free file nodes: " + str(disk.f_ffree)
print "free nodes available to non-super user: " + str(disk.f_favail)
print "flags: " + str(disk.f_flag)
print "miximum file name length: " + str(disk.f_namemax)
print "~~~~~~~~~~calculation of disk usage:~~~~~~~~~~"
totalBytes = float(disk.f_bsize*disk.f_blocks)
print "total space: %d Bytes = %.2f KBytes = %.2f MBytes = %.2f GBytes" % (totalBytes, totalBytes/1024, totalBytes/1024/1024, totalBytes/1024/1024/1024)
totalUsedSpace = float(disk.f_bsize*(disk.f_blocks-disk.f_bfree))
print "used space: %d Bytes = %.2f KBytes = %.2f MBytes = %.2f GBytes" % (totalUsedSpace, totalUsedSpace/1024, totalUsedSpace/1024/1024, totalUsedSpace/1024/1024/1024)
totalAvailSpace = float(disk.f_bsize*disk.f_bfree)
print "available space: %d Bytes = %.2f KBytes = %.2f MBytes = %.2f GBytes" % (totalAvailSpace, totalAvailSpace/1024, totalAvailSpace/1024/1024, totalAvailSpace/1024/1024/1024)
totalAvailSpaceNonRoot = float(disk.f_bsize*disk.f_bavail)
print "available space for non-super user: %d Bytes = %.2f KBytes = %.2f MBytes = %.2f GBytes " % (totalAvailSpaceNonRoot, totalAvailSpaceNonRoot/1024, totalAvailSpaceNonRoot/1024/1024, totalAvailSpaceNonRoot/1024/1024/1024)
The first part of the program print out each field of the returned structure. The second part of this program print out the disk space information. The output in my Ubuntu Linux gives the following output,
preferred file system block size: 4096
fundamental file system block size: 4096
total number of blocks in filesystem: 1399420
total number of free blocks: 465629
free blocks available to non-super user: 394542
total number of file nodes: 355520
total number of free file nodes: 186598
free nodes available to non-super user: 186598
flags: 0
miximum file name length: 255
~~~~~~~~~~calculation of disk usage:~~~~~~~~~~
total space: 5732024320 Bytes = 5597680.00 KBytes = 5466.48 MBytes = 5.34 GBytes
used space: 3824807936 Bytes = 3735164.00 KBytes = 3647.62 MBytes = 3.56 GBytes
available space: 1907216384 Bytes = 1862516.00 KBytes = 1818.86 MBytes = 1.78 GBytes
available space for non-super user: 1616044032 Bytes = 1578168.00 KBytes = 1541.18 MBytes = 1.51 GBytes
Leave a Reply Cancel reply
40% Discount on My Book — Android NDK Cookbook
Android NDK Cookbook ebook 40% discount with promotion code MREANC40 at Packt Publishing The promotion code is valid until 15th June.Categories
- Android Apps (18)
- Android Audio Editor (1)
- TS 2 (3)
- Video Converter Android (8)
- Video2Gif (1)
- Android Tutorial (27)
- Android Dev Tools (1)
- API illustrated (8)
- Multimedia API (3)
- ffmpeg on Android (4)
- NDK (6)
- UI (6)
- Animation (2)
- Code Snippet (2)
- Coding Beyond Technique (18)
- a word, a world (4)
- Bug Rectified (4)
- Programming Habit (1)
- Software as a Career (1)
- Software as User Experience (1)
- Compilers and Related (2)
- ELF (2)
- Computer Languages (31)
- C/C++ (13)
- Java (9)
- JavaScript (2)
- PHP (1)
- Python (8)
- Data Structure & Algorithms (29)
- Bits (1)
- Data Structure (5)
- Integers (10)
- BigInteger (1)
- Prime (4)
- Search (3)
- Sorting (5)
- Strings (5)
- Database (1)
- SQLite (1)
- Digital Signal Processing (33)
- Distributed Systems (17)
- Apache Cassandra (6)
- Apache Hadoop (8)
- Apache Avro (3)
- Apache Nutch (3)
- Apache Solr (1)
- Linux Study Notes (40)
- crontab (1)
- Linux Kernel Programming (8)
- Linux Programming (12)
- IPC (2)
- Linux Network Programming (5)
- Linux Signals (2)
- Linux Shell Scripting (1)
- ssh (3)
- Machinery (30)
- misc (1)
- My Ideas (1)
- My Project (3)
- Mobile Caching (1)
- Selective Decoding (2)
- My Publication (1)
- My Readings (1)
- Networking (15)
- Program for Performance (8)
- Uncategorized (1)
- Virtual Machine (2)
- Web Dev (8)
- web components (3)
- Android Apps (18)
Recent Comments
Archives
- May 2013 (2)
- April 2013 (1)
- March 2013 (4)
- December 2012 (2)
- November 2012 (6)
- October 2012 (6)
- September 2012 (3)
- August 2012 (13)
- July 2012 (15)
- June 2012 (3)
- May 2012 (8)
- April 2012 (4)
- March 2012 (13)
- February 2012 (19)
- January 2012 (9)
- December 2011 (11)
- November 2011 (12)
- October 2011 (4)
- September 2011 (12)
- August 2011 (16)
- July 2011 (15)
- June 2011 (6)
- May 2011 (10)
- April 2011 (13)
- March 2011 (20)
- February 2011 (4)
- November 2010 (2)
- May 2010 (1)
- April 2010 (1)
- February 2010 (1)




