[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.pathabspath

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'

"/.."다른 파일 이름과 결합 하면 시스템의 모든 파일에 액세스 할 수 있습니다.