Моя проблема - найти префикс общего пути для заданного набора файлов.
Буквально я ожидал, что "os.path.commonprefix" сделает именно это. К сожалению, тот факт, что commonprefix
находится в path
, скорее вводит в заблуждение, так как он фактически будет искать строковые префиксы.
Вопрос для меня в том, как это можно реально решить для путей? Эта проблема была кратко упомянута в этом (довольно высоко оцененном) ответе, но только как побочная заметка и предлагаемое решение (добавление слэшей к вводу commonprefix). Imho имеет проблемы, поскольку он не будет работать, например, для:
os.path.commonprefix(['/usr/var1/log/', '/usr/var2/log/'])
# returns /usr/var but it should be /usr
Чтобы другие не попадали в одну и ту же ловушку, было бы целесообразно обсудить эту проблему в отдельном вопросе: есть ли простое/переносное решение для этой проблемы, которое не полагается на неприятные проверки файловой системы (т.е. получить доступ к результату commonprefix и проверить, является ли он каталогом, а если не возвращает os.path.dirname
результата)?