code: def df(unit = 'GB'):
      '''A wrapper for the df shell command.'''
      details = {}
      headers = ['Filesystem', 'Type', 'Size', 'Used', 'Available', 'Capacity', 'MountedOn']
      n = len(headers)
      unit = df_conversions[unit]
      p = subprocess.Popen(args = ['df', '-TP'], stdout = subprocess.PIPE)
      stdout, stderr = p.communicate()
      lines = stdout.split("\n")
      lines[0] = lines[0].replace("Mounted on", "MountedOn").replace("1K-blocks", "Size").replace("1024-blocks", "Size")
      assert(lines[0].split() == headers)
      lines = [l.strip() for l in lines if l.strip()]
      for line in lines[1:]:
          tokens = line.split()
          if tokens[0] == 'none':
              continue
          assert(len(tokens) == n)
          d = {}
          for x in range(1, len(headers)):
              d[headers[x]] = tokens[x]
          d['Size'] = float(d['Size']) / unit
          assert(d['Capacity'].endswith("%"))
          d['Use%'] = d['Capacity']
          d['Used'] = float(d['Used']) / unit
          d['Available'] = float(d['Available']) / unit
          d['Using'] = 100*(d['Used']/d['Size'])
          if d['Type'].startswith('ext'):
              pass
              d['Using'] += 5
          else:
              ext3_filesystems = ['ganon:', 'kortemmelab:', 'albana:']
              for e3fs in ext3_filesystems:
                  if tokens[0].find(e3fs) != -1:
                      d['Using'] += 5
                      break
          details[tokens[0]] = d
      return details