Как вы можете использовать os.chdir, чтобы перейти к пути минус последний шаг? - PullRequest
2 голосов
/ 10 июня 2011

Например, методу передается путь в качестве параметра, этот путь может быть "C: / a / b / c / d", что если я хочу использовать os.chdir (), чтобы изменить на C: / a / b / c (без последней папки)? Может ли os.chdir () принять команду ".."?

Ответы [ 3 ]

10 голосов
/ 10 июня 2011

os.chdir() может принять '..' в качестве аргумента, да.Тем не менее, Python предоставляет независимый от платформы способ: используя os.pardir:

os.chdir(os.pardir)
3 голосов
/ 10 июня 2011

Вы можете использовать os.path.dirname:

In [1]: import os.path

In [2]: os.path.dirname('C:/a/b/c/d')
Out[2]: 'C:/a/b/c'

edit : отмечалось, что последний компонент не удаляется, если путь заканчивается косой чертой. В качестве более надежной альтернативы я предлагаю следующее:

In [5]: os.path.normpath(os.path.join('C:/a/b/c/d', '..'))
Out[5]: 'C:/a/b/c'

In [6]: os.path.normpath(os.path.join('C:/a/b/c/d/', '..'))
Out[6]: 'C:/a/b/c'

'..' можно заменить на os.path.pardir, чтобы сделать код еще более переносимым (по крайней мере, теоретически).

2 голосов
/ 10 июня 2011

Модуль os.path имеет некоторые функции, которые полезны для такого рода вещей.

os.path.normpath() может использоваться для преобразования пути, содержащего ссылки, такие как .., вабсолютный путь.Это обеспечит согласованное поведение независимо от того, как операционная система обрабатывает пути.

os.chdir(os.path.normpath("C:/a/b/c/..")) должен выполнить то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...