Получить имя папки в Python
В Python, какую команду следует использовать для получения имени папки, содержащей файл, с которым я работаю?
"C:\folder1\folder2\filename.xml"
Здесь "folder2"
- это то, что я хочу получить.
Единственное, что я придумал, это использовать os.path.split
дважды:
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
Есть ли лучший способ сделать это?
Ответы
Ответ 1
Вы можете использовать dirname
:
os.path.dirname(path)
Верните имя каталога пути пути. Это первый элемент пары, возвращенной путем прохождения пути к функции split().
И учитывая полный путь, вы можете нормально разбить, чтобы получить последнюю часть пути. Например, используя basename
:
os.path.basename(path)
Верните базовое имя пути пути. Это второй элемент пара возвращается путем прохождения пути к функции split(). Обратите внимание, что результат этой функции отличается от базового имени Unix программа; где basename для '/foo/bar/' возвращает 'bar', basename() функция возвращает пустую строку ('').
Все вместе:
>>> import os
>>> path=os.path.dirname("C:/folder1/folder2/filename.xml")
>>> path
'C:/folder1/folder2'
>>> os.path.basename(path)
'folder2'
Ответ 2
Вы хотите использовать dirname. Если вам нужен только один каталог, вы можете использовать os.path.basename,
При объединении это выглядит следующим образом:
os.path.basename(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))
Это должно заставить вас "other_sub_dir"
Ниже приведен не идеальный подход, но я изначально предложил использовать os.path.split и просто получить последний элемент. который будет выглядеть следующим образом:
os.path.split(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))[-1]
Ответ 3
os.path.dirname
- это то, что вы ищете -
os.path.dirname(r"C:\folder1\folder2\filename.xml")
Убедитесь, что вы добавили r
к строке, чтобы ее считали исходной строкой.
Демо -
In [46]: os.path.dirname(r"C:\folder1\folder2\filename.xml")
Out[46]: 'C:\\folder1\\folder2'
Если вы просто хотите folder2
, вы можете использовать os.path.basename
выше, Пример -
os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
Демо -
In [48]: os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
Out[48]: 'folder2'