Мне дан список путей, по которым мне нужно проверить файлы.Конечно, если мне дают рут и подкаталог, нет необходимости обрабатывать подкаталог.Например,
c:\test // process this
c:\test\pics // do not process this
c:\test2 // process this
Как я могу сказать (кросс-платформенный), что путь не является подкаталогом другого.Желательно, чтобы это было кроссплатформенным, и я не беспокоюсь о символических ссылках, если они не цикличны (в худшем случае я заканчиваю обработку данных дважды).
UPDATE: вот кодв конечном итоге использовать, благодаря @ FJ
def unique_path_roots(paths):
visited = set()
paths = list(set(paths))
for path in sorted(paths,key=cmp_to_key(locale.strcoll)):
path = normcase(normpath(realpath(path)))
head, tail = os.path.split(path)
while head and tail:
if head in visited:
break
head, tail = os.path.split(head)
else:
yield path
visited.add(path)