Модуль os в Python предоставляет множество различных методов и функций для работы с системными путями. Функция os.path.commonpath() возвращает общий путь вместо обычного строкового префикса.
Что такое функция os.path.commonpath() в Python?
os.path.commonpath() — это встроенный метод Python, используемый для поиска самого длинного общего подпути в списке путей. Метод commonpath() может вызвать ошибку ValueError, если указанный список путей содержит как абсолютный, так и относительный путь, или пуст.
Синтаксис
|
1 |
os.path.commonpath(list) |
Аргументы
Это список path-like объектов. Объект path-like представляет собой либо строку, либо байтовый объект, представляющий путь.
Возвращаемое значение
Метод commonpath() возвращает строковое значение, представляющее самый длинный общий подпуть во входном списке.
Пример
Давайте определим список из трех путей и найдем самый длинный общий путь, используя функцию os.path.commonpath().
|
1 2 3 4 5 6 7 8 9 |
import os paths = ['/Users/krunal/Desktop', '/Users/krunal/Desktop/code', '/Users/krunal/Desktop/datasets'] prefix = os.path.commonpath(paths) print("The Longest Common Path Is: ", prefix) |
Вывод:
|
1 |
The Longest Common Path Is: /Users/krunal/Desktop |
Вы можете видеть, что строка «/Users/krunal/Desktop» является общей для всех трех путей. Таким образом, он возвращает эту общую длинную строку.
Смешение абсолютного и относительного пути
Если вы смешаете абсолютный и относительный пути в списке и примените к ним функцию commonpath(), это вызовет ошибку ValueError.
|
1 2 3 4 5 6 7 8 9 |
import os paths = ['Users/krunal', '/Users/krunal/Desktop/code', 'Users/krunal/Desktop'] prefix = os.path.commonpath(paths) print("The Longest Common Path Is: ", prefix) |
Вывод:
|
1 2 3 4 5 6 |
Traceback(most recent call last): File "/Users/krunal/Desktop/code/pyt/database/app.py", line 7, in <module> prefix = os.path.commonpath(paths) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/posixpath.py", line 510, in commonpath raise ValueError("Can't mix absolute and relative paths") from None ValueError: Can't mix absolute and relative paths |
В этом примере мы смешали абсолютный путь с относительным путем в списке, а затем передали этот список функции commonpath().
