summaryrefslogtreecommitdiffstats
path: root/Lib/shutil.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/shutil.py')
-rw-r--r--Lib/shutil.py44
1 files changed, 30 insertions, 14 deletions
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 0af9fa5..329add0 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -12,7 +12,6 @@ import fnmatch
import collections
import errno
import tarfile
-from collections import namedtuple
try:
import bz2
@@ -36,6 +35,7 @@ __all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2",
"register_archive_format", "unregister_archive_format",
"get_unpack_formats", "register_unpack_format",
"unregister_unpack_format", "unpack_archive"]
+ # disk_usage is added later, if available on the platform
class Error(EnvironmentError):
pass
@@ -756,20 +756,36 @@ def unpack_archive(filename, extract_dir=None, format=None):
kwargs = dict(_UNPACK_FORMATS[format][2])
func(filename, extract_dir, **kwargs)
-if hasattr(os, "statvfs") or os.name == 'nt':
- _ntuple_diskusage = namedtuple('usage', 'total used free')
+
+if hasattr(os, 'statvfs'):
+
+ __all__.append('disk_usage')
+ _ntuple_diskusage = collections.namedtuple('usage', 'total used free')
def disk_usage(path):
- """Return disk usage statistics about the given path as a namedtuple
- including total, used and free space expressed in bytes.
+ """Return disk usage statistics about the given path.
+
+ Returned valus is a named tuple with attributes 'total', 'used' and
+ 'free', which are the amount of total, used and free space, in bytes.
"""
- if hasattr(os, "statvfs"):
- st = os.statvfs(path)
- free = (st.f_bavail * st.f_frsize)
- total = (st.f_blocks * st.f_frsize)
- used = (st.f_blocks - st.f_bfree) * st.f_frsize
- else:
- import nt
- total, free = nt._getdiskusage(path)
- used = total - free
+ st = os.statvfs(path)
+ free = st.f_bavail * st.f_frsize
+ total = st.f_blocks * st.f_frsize
+ used = (st.f_blocks - st.f_bfree) * st.f_frsize
+ return _ntuple_diskusage(total, used, free)
+
+elif os.name == 'nt':
+
+ import nt
+ __all__.append('disk_usage')
+ _ntuple_diskusage = collections.namedtuple('usage', 'total used free')
+
+ def disk_usage(path):
+ """Return disk usage statistics about the given path.
+
+ Returned valus is a named tuple with attributes 'total', 'used' and
+ 'free', which are the amount of total, used and free space, in bytes.
+ """
+ total, free = nt._getdiskusage(path)
+ used = total - free
return _ntuple_diskusage(total, used, free)