python 확인 현재 디렉토리 및 파일 디렉토리 찾기




파이썬 폴더 명 변경 (12)

파이썬에서 찾을 수있는 명령은 무엇입니까?

  1. 현재 디렉토리 (파이썬 스크립트를 실행했을 때 터미널에 있던 곳),
  2. 제가 실행중인 파일은 어디에 있습니까?

조금 늦었지만 현재 실행 컨텍스트의 이름을 찾는 가장 간결한 방법은

current_folder_path, current_folder_name = os.path.split(os.getcwd())

현재 실행 된 스크립트의 위치를 ​​검색하는 경우 sys.argv[0] 을 사용하여 전체 경로를 가져올 수 있습니다.


Python 파일이 들어있는 디렉토리의 전체 경로를 얻으려면 해당 파일에 다음과 같이 작성하십시오.

import os 
dir_path = os.path.dirname(os.path.realpath(__file__))

( __file__ 상수의 값이 현재 작업 디렉토리와 관련이 있고 os.chdir() 의해 변경되지 않기 때문에 이미 os.chdir() 을 사용하여 현재 작업 디렉토리를 변경 한 경우 위의 명령은 작동하지 않습니다 os.chdir() 호출.)

현재 작업 디렉토리 사용을 얻으려면

import os
cwd = os.getcwd()

위에 사용 된 모듈, 상수 및 함수에 대한 설명서 참조 :

  • osos.path 모듈.
  • __file__ 상수
  • os.path.realpath(path) ( "지정된 파일 이름의 표준 경로를 반환 하고 경로에서 발견 된 심볼릭 링크를 제거합니다" )
  • os.path.dirname(path) ( "경로명 path 의 디렉토리 이름"을 반환합니다)
  • os.getcwd() ( "현재 작업 디렉토리를 나타내는 문자열"을 반환합니다.)
  • os.chdir(path) ( "현재 작업 디렉토리를 path 변경" )

참조로 유용 할 수 있습니다.

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))

현재 디렉토리의 전체 경로를 가져 오려면 다음을 수행하십시오.

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__)


스크립트에 따라 현재 작업 디렉토리 유형을 보려면 다음을 수행하십시오.

import os
current_working_directory = os.getcwd()

Pathlib는이 방법으로 현재 스크립트가있는 디렉토리를 가져올 수 있습니다 :

import pathlib
filepath = pathlib.Path(__file__).resolve().parent

1. 현재 디렉토리의 전체 경로를 얻으려면

    >>import os
    >>print os.getcwd()

o / p : "C : \ Users \ admin \ myfolder"

1. 현재 디렉터리 폴더 이름 만 가져 오기

    >>import os
    >>str1=os.getcwd()
    >>str2=str1.split('\\')
    >>n=len(str2)
    >>print str2[n-1]

o / p : "myfolder"


현재 현재있는 파일의 현재 디렉토리를 찾으려는 경우 :

OS 독립적 방법 :

dirname, filename = os.path.split(os.path.abspath(__file__))

Python 3.4 ( PEP 428 - pathlib 모듈 - 객체 지향 파일 시스템 경로 )에 introducedpathlib 모듈 은 경로 관련 경험을 훨씬 향상시킵니다.

$ pwd
/home/skovorodkin/stack
$ tree
.
└── scripts
    ├── 1.py
    └── 2.py

현재 작업 디렉토리를 사용하려면 Path.cwd() 사용 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 에 액세스하십시오 ( .parent 앞에 .resolve() 를 호출하는 것이 좋습니다).

print(Path(__file__).resolve().parent)  # /home/skovorodkin/stack/scripts

일부 상황에서는 __file__ 이 신뢰할 수 없다는 것을 기억하십시오 : 파이썬에서 현재 실행중인 파일의 경로를 얻으려면 어떻게해야합니까? .

Path.cwd() , Path.resolve() 및 다른 Path 메서드는 문자열이 아니라 경로 객체 (내 경우에는 PosixPath 를 반환한다는 점에 유의하십시오. open 내장 함수는 문자열 또는 바이트 객체에서만 작동하고 Path 객체를 지원하지 않으므로 Path 객체를 문자열로 변환하거나 Path.open() 메서드를 사용해야하므로 Python 3.4 및 3.5에서 약간의 고통을 겪었습니다. 후자의 옵션을 사용하려면 이전 코드를 변경해야합니다.

$ cat scripts/2.py
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 - 파이썬 3.6에서 구현 된 파일 시스템 경로 프로토콜을 추가하면 PathLike 객체의 지원 기능이 추가되어 함수를 open 수 있으므로 이제 Path 객체를 전달하여 함수를 직접 open 수 있습니다.

$ python3.6 scripts/2.py
OK






directory