code: def os_path_split_asunder(path, debug=False):
          
          parts = []
          while True:
              newpath, tail = os.path.split(path)
              if debug: print repr(path), (newpath, tail)
              if newpath == path:
                  assert not tail
                  if path: parts.append(path)
                  break
              parts.append(tail)
              path = newpath
          parts.reverse()
          return parts
docs: http://stackoverflow.com/a/4580931/171094