[python] 파이썬에서 절대 파일 경로를 얻는 방법
과 같은 경로가 주어지면 "mydir/myfile.txt"
파이썬에서 현재 작업 디렉토리와 관련된 파일의 절대 경로를 어떻게 찾을 수 있습니까? 예를 들어 Windows의 경우 다음과 같이 끝날 수 있습니다.
"C:/example/cwd/mydir/myfile.txt"
답변
>>> import os
>>> os.path.abspath("mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'
이미 절대 경로 인 경우에도 작동합니다.
>>> import os
>>> os.path.abspath("C:/example/cwd/mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'
답변
새로운 Python 3.4 라이브러리를 사용할 수 있습니다 pathlib
. (당신은 또한 사용하여 파이썬 2.6 또는 2.7을 얻을 수 있습니다 pip install pathlib
.) 저자는 썼다 : “.이 라이브러리의 목적은 핸들 파일 시스템 경로와 사용자가 그들을 수행 일반적인 작업에 클래스의 간단한 계층 구조를 제공하는 것입니다”
Windows에서 절대 경로를 얻으려면
>>> from pathlib import Path
>>> p = Path("pythonw.exe").resolve()
>>> p
WindowsPath('C:/Python27/pythonw.exe')
>>> str(p)
'C:\\Python27\\pythonw.exe'
또는 UNIX의 경우 :
>>> from pathlib import Path
>>> p = Path("python3.4").resolve()
>>> p
PosixPath('/opt/python3/bin/python3.4')
>>> str(p)
'/opt/python3/bin/python3.4'
문서는 다음과 같습니다. https://docs.python.org/3/library/pathlib.html
답변
더 나은 방법으로, 모듈 (에있는 PyPI
)을 설치 os.path
하면 문자열이 사용되는 모든 곳에서 사용할 수있는 객체의 메소드로 모든 기능 및 기타 관련 기능을 래핑합니다 .
>>> from path import path
>>> path('mydir/myfile.txt').abspath()
'C:\\example\\cwd\\mydir\\myfile.txt'
>>>
답변
오늘 당신은 또한 다음 unipath
을 기반으로 한 패키지를 사용할 수 있습니다 path.py
: http://sluggo.scrapping.cc/python/unipath/
>>> from unipath import Path
>>> absolute_path = Path('mydir/myfile.txt').absolute()
Path('C:\\example\\cwd\\mydir\\myfile.txt')
>>> str(absolute_path)
C:\\example\\cwd\\mydir\\myfile.txt
>>>
이 패키지는 일반적인 os.path 유틸리티에 깔끔한 인터페이스를 제공 하므로이 패키지를 사용하는 것이 좋습니다 .
답변
pathlib
실제로 질문에 대답하는 Python 3.4 이상 업데이트 :
from pathlib import Path
relative = Path("mydir/myfile.txt")
absolute = relative.absolute() # absolute is a Path object
임시 문자열 만 필요한 경우 다음을 포함 Path
하여 관련 기능이 모두 포함 된 객체를 사용할 수 있습니다 .os.path
abspath
from os.path import abspath
absolute = abspath(relative) # absolute is a str object
답변
import os
os.path.abspath(os.path.expanduser(os.path.expandvars(PathNameString)))
참고 expanduser
경우에 (유닉스) 파일 (또는 디렉토리) 이름과 선도적 포함 할 수있다 위치에 대한 주어진식이 필요하다 ~/
(물결표를 사용자의 홈 디렉토리를 참조), 그리고 expandvars
다른 환경 변수 (등을 담당 $HOME
).
답변
이것은 항상 이 다른 스크립트 내에서 호출 된 경우에도, 현재 스크립트의 오른쪽에 파일 이름을 가져옵니다. 를 사용할 때 특히 유용합니다 subprocess
.
import sys,os
filename = sys.argv[0]
거기에서 다음을 사용하여 스크립트의 전체 경로를 얻을 수 있습니다.
>>> os.path.abspath(filename)
'/foo/bar/script.py'
또한 /..
디렉토리 계층에서 ‘위로’이동하려는 횟수만큼 추가하여 폴더를 쉽게 탐색 할 수 있습니다.
암호를 얻으려면 :
>>> os.path.abspath(filename+"/..")
'/foo/bar'
부모 경로의 경우 :
>>> os.path.abspath(filename+"/../..")
'/foo'
"/.."
다른 파일 이름과 결합 하면 시스템의 모든 파일에 액세스 할 수 있습니다.