code

파이썬에서 심볼릭 링크 또는 소프트 링크의 대상 파일의 전체 (절대 경로)를 찾는 방법

codestyles 2020. 12. 15. 19:20
반응형

파이썬에서 심볼릭 링크 또는 소프트 링크의 대상 파일의 전체 (절대 경로)를 찾는 방법


내가 ls -l /etc/fonts/conf.d/70-yes-bitmaps.conf를 줄 때

lrwxrwxrwx <snip> /etc/fonts/conf.d/70-yes-bitmaps.conf -> ../conf.avail/70-yes-bitmaps.conf

따라서 심볼릭 링크 또는 소프트 링크의 경우 Python에서 대상 파일의 전체 (절대 경로)를 찾는 방법,

내가 사용한다면

os.readlink('/etc/fonts/conf.d/70-yes-bitmaps.conf')

그것은 출력

../conf.avail/70-yes-bitmaps.conf

하지만 상대 경로가 아닌 절대 경로가 필요하므로 원하는 출력은 다음과 같아야합니다.

/etc/fonts/conf.avail/70-yes-bitmaps.conf

..심볼릭 링크 또는 소프트 링크 파일의 상위 디렉토리의 실제 전체 경로 로 바꾸는 방법 .


os.path.realpath(path)

os.path.realpath 는 지정된 파일 이름의 표준 경로를 반환하여 경로에서 발견 된 모든 심볼릭 링크를 제거합니다.


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에도 존재하며 거기에 대한 수정 사항이 없다는 것을 알고 있습니다.


http://docs.python.org/library/os.path.html#os.path.abspath

또한 현재 작업 디렉토리에 있는지 아니면 다른 곳에서 작업하는지에 따라 joinpath 및 normpath도 있습니다. 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') 
  ) 
)

문서는 사용 말한다 os.path.join():

결과는 절대 또는 상대 경로 이름이 될 수 있습니다. 상대적인 경우를 사용하여 절대 경로 이름으로 변환 할 수 있습니다 os.path.join(os.path.dirname(path), result).


Windows 10에서 python 3.5, os.readlink("C:\\Users\PP")여기서 "C : \ Users \ PP"는 심볼릭 링크 (접합 링크 아님)가 작동합니다.

디렉토리의 절대 경로를 반환합니다.

이것은 Ubuntu 16.04, python 3.5에서도 작동합니다.


pathlib파일 시스템 작업 에는 라이브러리 를 사용하는 것이 좋습니다 .

import pathlib

x = pathlib.Path('lol/lol/path')
x.resolve()

대한 문서Path.resolve(strict=False) : 모든 심볼릭 링크를 해결하여 절대 경로를 만듭니다. 새 경로 개체가 반환됩니다.

참조 URL : https://stackoverflow.com/questions/3220755/how-to-find-the-target-files-fullabsolute-path-of-the-symbolic-link-or-soft-l

반응형