VMM/common: Added function human_size(). v0.6.x
authorPascal Volk <neverseen@users.sourceforge.net>
Fri, 11 Feb 2011 02:11:15 +0000
branchv0.6.x
changeset 393 fb2ba1456bc5
parent 392 ffce67e3c6eb
child 394 d3a3c6155879
VMM/common: Added function human_size().
VirtualMailManager/common.py
--- a/VirtualMailManager/common.py	Thu Feb 10 23:36:31 2011 +0000
+++ b/VirtualMailManager/common.py	Fri Feb 11 02:11:15 2011 +0000
@@ -67,6 +67,20 @@
     return binary
 
 
+def human_size(size):
+    """Converts the `size` in bytes in human readable format."""
+    if not isinstance(size, (long, int)) or size < 1:
+        raise TypeError("'size' must be a long or int and greater than 0.")
+    unit_limit = (('T', 1 << 40), ('G', 1 << 30), ('M', 1 << 20),
+                  ('k', 1 << 10), ('b', 1))
+    for unit, limit in unit_limit:
+        if size >= limit:
+            if unit != 'b':
+                return '%.2f%s' % (size / float(limit), unit)
+            else:
+                return '%u%s' % (size / limit, unit)
+
+
 def size_in_bytes(size):
     """Converts the string `size` to a long (size in bytes).