파이썬에서 심볼릭 링크 또는 소프트 링크의 대상 파일의 전체 (절대 경로)를 찾는 방법
내가 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)
: 모든 심볼릭 링크를 해결하여 절대 경로를 만듭니다. 새 경로 개체가 반환됩니다.
'code' 카테고리의 다른 글
문자열을 double로 변환-가능합니까? (0) | 2020.12.15 |
---|---|
Git의 태그 이후 이름과 커밋 제목 만 표시하려면 어떻게해야합니까? (0) | 2020.12.15 |
Rspec을 사용하여 Rails 3.0.11에서 컨트롤러의 JSON 형식을 어떻게 테스트합니까? (0) | 2020.12.15 |
브랜치 생성 이후 커밋 표시 (0) | 2020.12.15 |
회색으로 표시된 스토리 보드보기 요소 (0) | 2020.12.15 |