Больше generi c os.path.basename для os.walk ()? - PullRequest
0 голосов
/ 29 апреля 2020

os.walk() yields a 3-tuple (dirpath, dirnames, filenames) (см. документацию ).

Если я хочу использовать определенные части dirpath, есть ли более надежный способ, чем разделение на \?

В пути типа "C: \ top_folder \ project \ Someelse" В настоящее время я делаю dirpath.split('\\')[2] # project, но если структура папок изменится, мне нужно будет изменить эту строку, и я не всегда будет знать, изменится ли структура папок, пока не сломаются мои сценарии.

Есть ли способ разбить dirpath, чтобы быть более точным c, похожим на os.path.basename, просто более общим?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Если я правильно понял ваш вопрос, вы хотите получить родителя "dirpath", который содержит "somethingelse". Вы можете просто сделать dirpath.split('\\')[-2] Это не будет затронуто, даже если структура каталогов изменится до dirpath

0 голосов
/ 29 апреля 2020

Pathlib делает это очень хорошим способом;

https://docs.python.org/3/library/pathlib.html#pathlib .PurePath.parts

https://docs.python.org/3/library/pathlib.html#pathlib .PurePath.parent

Это современный способ работы с Python и путями.

...