str = """A/file1
A/B/C/D/file3
A/B/file1
A/B/file2
A/B/C/D/file1
A/file2
A/W/X/Y/Z/file1
A/W/file1
A/W/X/file1
A/file3
A/B/C/file1
A/W/X/Y/file1
A/B/file2"""
import string
files = string.split(str, '\n')
import os.path
std = sorted(files, key=lambda file: (os.path.dirname(file), os.path.
    basename(file)))
print(std[0])
for i in range(1, len(std)):
    if os.path.dirname(std[i]) != os.path.dirname(std[i - 1]):
        print('')
print(std[i])
Иерархическая сортировка путей к файлам в python