Python에서 어떤 명령을 사용하여 찾을 수 있습니까?
- 현재 디렉토리(Python 스크립트를 실행할 때 터미널에 있었던 위치) 및
- 내가 실행하는 파일은 어디에 있습니까?
질문자 :John Howard
Python에서 어떤 명령을 사용하여 찾을 수 있습니까?
Python 파일이 포함된 디렉토리의 전체 경로를 얻으려면 해당 파일에 다음을 작성하십시오.
import os dir_path = os.path.dirname(os.path.realpath(__file__))
os.chdir()
을 사용하여 현재 작업 디렉토리를 변경했다면 위의 주문은 작동하지 않을 것 __file__
상수의 값은 현재 작업 디렉토리에 상대적이고 os.chdir()
호출)
현재 작업 디렉토리를 얻으려면 다음을 사용하십시오.
import os cwd = os.getcwd()
위에서 사용된 모듈, 상수 및 함수에 대한 문서 참조:
os
및 os.path
모듈.__file__
상수os.path.realpath(path)
( "지정된 파일 이름의 정식 경로, 경로에서 발견된 모든 심볼릭 링크 제거" 반환)os.path.dirname(path)
( path
의 디렉토리 이름" 반환)os.getcwd()
( "현재 작업 디렉토리를 나타내는 문자열" 반환)os.chdir(path)
( "현재 작업 디렉토리를 path
변경" ) 그리고 __file__
속성 은 실행 중인 파일의 위치를 찾는 데 도움이 될 수 있습니다. 이 스택 오버플로 게시물은 모든 것을 설명 합니다. Python에서 현재 실행된 파일의 경로를 얻으려면 어떻게 해야 합니까?
참조로 유용할 수 있습니다.
import os print("Path at terminal when executing this file") print(os.getcwd() + "\n") print("This file path, relative to os.getcwd()") print(__file__ + "\n") print("This file full path (following symlinks)") full_path = os.path.realpath(__file__) print(full_path + "\n") print("This file directory and name") path, filename = os.path.split(full_path) print(path + ' --> ' + filename + "\n") print("This file directory only") print(os.path.dirname(full_path))
pathlib
모듈, 파이썬 3.4에 도입 ( PEP 428 - pathlib 모듈 - 객체 지향 파일 시스템 경로 ), 훨씬 더 나은 경로 관련 경험을합니다.
pwd /home/skovorodkin/stack tree . └── scripts ├── 1.py └── 2.py
현재 작업 디렉토리를 얻으려면Path.cwd()
사용하십시오.
from pathlib import Path print(Path.cwd()) # /home/skovorodkin/stack
스크립트 파일의 절대 경로를 얻으려면 Path.resolve()
메서드를 사용하세요.
print(Path(__file__).resolve()) # /home/skovorodkin/stack/scripts/1.py
그리고 스크립트가있는 디렉토리 액세스의 경로 얻기 위해 .parent
(그것은 호출에 추천 .resolve()
전 .parent
) :
print(Path(__file__).resolve().parent) # /home/skovorodkin/stack/scripts
__file__
은 어떤 상황에서는 신뢰할 수 없다는 것을 기억하십시오 : 파이썬에서 현재 실행된 파일의 경로를 어떻게 얻습니까? .
Path.cwd()
, Path.resolve()
및 기타 Path
메서드는 문자열이 아닌 경로 개체( PosixPath
open
내장 함수가 문자열 또는 바이트열 객체에서만 작동할 수 있고 Path
객체를 지원하지 않기 때문에 약간의 고통을 일으켰습니다 Path
객체를 문자열 Path.open()
메서드를 사용해야 했습니다. , 그러나 후자의 옵션을 사용하려면 이전 코드를 변경해야 합니다.
from pathlib import Path p = Path(__file__).resolve() with p.open() as f: pass with open(str(p)) as f: pass with open(p) as f: pass print('OK')
python3.5 scripts/2.py Traceback (most recent call last): File "scripts/2.py", line 11, in <module> with open(p) as f: TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')
보시다시피 open(p)
은 Python 3.5에서 작동하지 않습니다.
PEP 519 — Python 3.6에서 구현된 파일 시스템 경로 프로토콜을 추가하면 PathLike
객체 open
함수에 추가되므로 이제 Path
객체를 open
함수에 직접 전달할 수 있습니다.
python3.6 scripts/2.py OK
현재 디렉토리 전체 경로를 얻으려면
>>import os >>print os.getcwd()
출력: "C :\Users\admin\myfolder"
현재 디렉토리 폴더 이름만 가져오려면
>>import os >>str1=os.getcwd() >>str2=str1.split('\\') >>n=len(str2) >>print str2[n-1]
출력: "myfolder"
현재 있는 파일의 현재 디렉토리를 찾으려는 경우:
OS 불가지론적 방식:
dirname, filename = os.path.split(os.path.abspath(__file__))
Python 3.4를 사용하는 경우 pathlib.Path.cwd()
를 편리하게 호출하여 다른 많은 새로운 기능과 함께 현재 작업 디렉토리를 나타내는 Path
객체를 가져올 수 있는 pathlib
이 새로운 API에 대한 자세한 정보는 여기 에서 찾을 수 있습니다.
Pathlib 를 사용하여 현재 스크립트가 포함된 디렉토리를 가져올 수 있습니다.
import pathlib filepath = pathlib.Path(__file__).resolve().parent
현재 디렉토리 전체 경로를 얻으려면:
os.path.realpath('.')
#1에 대한 답변:
현재 디렉토리를 원하면 다음을 수행하십시오.
import os os.getcwd()
폴더 이름만 원하고 해당 폴더에 대한 경로가 있는 경우 다음을 수행하십시오.
def get_folder_name(folder): ''' Returns the folder name, given a full folder path ''' return folder.split(os.sep)[-1]
#2에 대한 답변:
import os print os.path.abspath(__file__)
현재 실행 컨텍스트의 이름을 찾는 가장 간결한 방법은 다음과 같습니다.
current_folder_path, current_folder_name = os.path.split(os.getcwd())
현재 실행된 스크립트의 위치를 검색하는 경우 sys.argv[0]
을 사용하여 전체 경로를 얻을 수 있습니다.
질문 1의 경우, os.getcwd() # Get working directory
를 os.chdir(r'D:\Steam\steamapps\common') # Set working directory
sys.argv
는 변경할 수 없으므로 항상 현재 파일(모듈 개체 경로)을 반환하고 os.chdir()
영향을 받지 않기 때문에 질문 2에 sys.argv[0]
을 사용하는 것이 좋습니다. 또한 다음과 같이 할 수 있습니다.
import os this_py_file = os.path.realpath(__file__) # vvv Below comes your code vvv #
그러나 그 스니펫과 sys.argv[0]
은 작동하지 않거나 PyInstaller로 컴파일할 때 이상하게 작동합니다. 마술 속성이 __main__
수준 sys.argv[0]
이 실행 파일이 호출된 방식이기 때문입니다(즉, 작업 디렉토리의 영향을 받습니다.)
출처 : http:www.stackoverflow.com/questions/5137497/find-the-current-directory-and-files-directory
YouTube API에서 YouTube 동영상 미리보기 이미지를 얻으려면 어떻게 해야 합니까? (0) | 2021.11.24 |
---|---|
JavaScript 함수에 대한 기본 매개변수 값 설정 (0) | 2021.11.23 |
PHP에서 mysql_* 함수를 사용하면 안 되는 이유는 무엇입니까? (0) | 2021.11.23 |
ssh "권한이 너무 열려 있습니다"오류 (0) | 2021.11.23 |
jQuery에서 테이블 행 추가 (0) | 2021.11.23 |