Как заказать пути к файлам в лексикографическом порядке? питон

Мне нужно отсортировать список путей к файлам в лексикографическом порядке, например, выходные данные сортируются следующим образом:

C:\Test\Project1\Example\test1.txt   
C:\Test\Project1\Example\test2.txt   
C:\Test\Project1\Example\Sub\meee.txt       
C:\Test\Project1\Example\Sub\test1.txt    
C:\Test\Project1\Example\Sub\youu.txt   
C:\Test\Project1\Example\Zzz\zzz.py

Когда я сортирую это естественно, я получаю C:\Test\Project1\Example\Sub\meee.txt до C:\Test\Project1\Example\test1.txt и не хочу этого.

1 ответ

Ты можешь использовать sorted с пользовательским ключом, который отдает приоритет файлам в корневом каталоге:

L = [r'C:\Test\Project1\Example\test1.txt', r'C:\Test\Project1\Example\test2.txt',
     r'C:\Test\Project1\Example\Sub\meee.txt', r'C:\Test\Project1\Example\Sub\test1.txt',   
     r'C:\Test\Project1\Example\Sub\youu.txt', r'C:\Test\Project1\Example\Zzz\zzz.py']

def sort_key(x):
    splits = x.split('\\')[4:]
    return len(splits), splits

res = sorted(L, key=sort_key)

['C:\\Test\\Project1\\Example\\test1.txt',
 'C:\\Test\\Project1\\Example\\test2.txt',
 'C:\\Test\\Project1\\Example\\Sub\\meee.txt',
 'C:\\Test\\Project1\\Example\\Sub\\test1.txt',
 'C:\\Test\\Project1\\Example\\Sub\\youu.txt',
 'C:\\Test\\Project1\\Example\\Zzz\\zzz.py']
Другие вопросы по тегам