2012-05-10 2 views
4

Если у меня есть путь к заданному файлу, скажите 'C:\Folder\OtherFolder\AnotherFolder\file.txt', есть ли способ в python, я могу получить все родительские каталоги для file.txt до 'OtherFolder'? Глубина пути не постоянна, поэтому я не могу просто повторять определенное количество раз, но мне всегда нужно вставать до 'OtherFolder' независимо от глубины. Я чувствую, что это должно быть проще, чем я это делаю, но они говорят, что четверг - новый понедельник. :)Получить родительские каталоги файла, до точки

ответ

7

Если вы используете Windows, попробуйте следующее:

import os 
os.path.relpath('C:\Folder\OtherFolder\AnotherFolder\file.txt', 'C:\Folder\OtherFolder') 

Вы можете разделить его с помощью os.path.sep (в вашем случае \):

rel_path.split(os.path.sep) 

, чтобы получить отдельные каталоги.

На машине Linux подобный вызов возвращает то, что вы имеете в виду:

os.path.relpath('/Folder/OtherFolder/AnotherFolder/file.txt', '/Folder/OtherFolder') 
# returns 'AnotherFolder/file.txt' 

rel_path.split(os.path.sep) 
# returns ['AnotherFolder', 'file.txt'] 
+1

Великий, это именно то, что я искал. Благодаря! –

Смежные вопросы