Python 3.5+osфункция
os.path.commonpath
os.path — разбор пути
Возвращает самый длинный общий подпуть списка путей — по компонентам (в отличие от commonprefix).
Синтаксис
os.path.commonpath(paths)
Подходит для проверки «путь лежит внутри каталога»: commonpath([base, target]) == base, если оба пути предварительно прогнаны через realpath. Абсолютные и относительные пути смешивать нельзя, как и передавать пустой список, — оба случая поднимают ValueError. На Windows пути на разных дисках тоже дают ValueError.
Примеры
import os
print(os.path.commonpath(['/usr/a', '/usr/b']).endswith('usr')) # → True
print(os.path.commonpath(['a/b/c', 'a/b/d']) == os.path.join('a', 'b')) # → True
files = ['/var/log/app/a.log', '/var/log/app/b.log', '/var/log/db/c.log']
print(os.path.commonpath(files).endswith(os.path.join('var', 'log'))) # → True
print(os.path.commonprefix(['/usr/lib', '/usr/local'])) # → /usr/l — посимвольно; с 3.15 commonprefix даёт DeprecationWarning
print(os.path.commonpath(['/usr', 'usr'])) # → ValueError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности