code: def splitall(path):
      
      allparts = []
      while True:
          parts = os.path.split(path)
          if parts[0] == path:  # sentinel for absolute paths
              allparts.insert(0, parts[0])
              break
          elif parts[1] == path:  # sentinel for relative paths
              allparts.insert(0, parts[1])
              break
          else:
              path = parts[0]
              allparts.insert(0, parts[1])
      return allparts
docs: Split a path into a list of directory names (and optionally a filename).
  
      Parameters
      ----------
      path: str
          The path (absolute or relative).
  
      Returns
      -------
      allparts: list[str]
          List of directory names (and optionally a filename)
  
      Example
      -------
      "foo/bar/baz.py" => ["foo", "bar", "baz.py"]
      "/absolute/path.py" => ["/", "absolute", "baz.py"]
  
      Notes
      -----
      Credit to Trent Mick. Taken from
      https://www.safaribooksonline.com/library/view/python-cookbook/0596001673/ch04s16.html