В Windows 10 работает python 3.5, os.readlink("C:\\Users\PP")
, где «C: \ Users \ PP» - это символическая ссылка (не соединение).
Возвращает абсолютный путь к каталогу.
Это работает и на Ubuntu 16.04, python 3.5.
Как говорит unutbu, os.path.realpath (path) должен быть правильным ответом, возвращая канонический путь указанного имени файла, разрешая любые символические ссылки на их цели. Но он сломан под Windows.
Я создал патч для Python 3.2, чтобы исправить эту ошибку, и загрузил ее в:
http: //bugs.python. org / issue9949
Он исправляет функцию realpath в Python32 \ Lib\ntpath.py
Я также разместил ее на своем сервере здесь:
http://www.burtonsys.com/ntpath_fix_issue9949.zip
К сожалению, ошибка присутствует и в Python 2.x, и я ничего не знаю для него там.
Документация говорит использовать os.path.join()
:
. Результатом может быть либо абсолютное, либо относительное имя пути; если он относительный, он может быть преобразован в абсолютный путь с помощью
os.path.join(os.path.dirname(path), result)
.
http://docs.python.org/library/os.path.html#os.path.abspath
также соединяют путь и нормальный путь, в зависимости от того, re в текущем рабочем каталоге, или вы работаете с вещами в другом месте. normpath может быть более прямым для вас.
Обновление:
в частности:
os.path.normpath(
os.path.join(
os.path.dirname( '/etc/fonts/conf.d/70-yes-bitmaps.conf' ),
os.readlink('/etc/fonts/conf.d/70-yes-bitmaps.conf')
)
)
OSError: [Errno 22] Invalid argument: 'your-path'
– Diego
23 January 2015 в 11:33
os.path.realpath(path)
os.path.realpath возвращает канонический путь указанного имени файла, исключая любые символические ссылки, встречающиеся в пути.
Path
, вы можете сделать то же самое, выполнив path.resolve()
– rogueleaderr
20 March 2018 в 20:57
C:\\Users\\PP
является символической ссылкой на другой каталог, в Windows 10 с использованием python 3.5, os.path.realpath("C:\\Users\PP")
в основном возвращает путь symlink, а не реальный путь.
– alpha_989
31 March 2018 в 16:45