source

현재 디렉터리 및 파일 디렉터리 찾기

manycodes 2023. 1. 19. 21:07
반응형

현재 디렉터리 및 파일 디렉터리 찾기

판단 방법:

  1. 현재 디렉토리(Python 스크립트를 실행할 때 터미널에 있었던 위치) 및
  2. 실행 중인 Python 파일은 어디에 있습니까?

Python 파일이 포함된 디렉토리의 전체 경로를 가져오려면 해당 파일에 다음과 같이 입력합니다.

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

의 주문은 os.chdir()하려면 이 합니다.__file__는 현재 으로, constant에 .os.chdir()


현재 작업 디렉토리를 가져오려면

import os
cwd = os.getcwd()

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

  • 및 모듈
  • 상수
  • os.path.realpath(path) ("지정된 파일 이름의 표준 경로"를 사용하여 경로에서 발생하는 심볼릭 링크를 제거합니다.)
  • os.path.dirname(path) ('경로명의 디렉토리명'으로 표기)
  • os.getcwd() ("현재 작업 디렉토리를 나타내는 문자열"로 표시됨)
  • os.chdir(path) ("현재 작업 디렉토리를 "변경)

현재 작업 디렉터리:

또한 이 속성은 실행 중인 파일의 위치를 찾는 데 도움이 됩니다.이 Stack Overflow 투고에서는 모든 것에 대해 설명합니다.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))

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

pwd

/home/skovorodkin/stack

tree

.
└── scripts
    ├── 1.py
    └── 2.py

현재의 작업 디렉토리를 취득하려면 , 다음의 커맨드를 사용합니다.

from pathlib import Path

print(Path.cwd())  # /home/skovorodkin/stack

스크립트 파일의 절대 경로를 가져오려면 다음 방법을 사용합니다.

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

또, 스크립트가 있는 디렉토리의 패스를 취득하려면 , 에 액세스 합니다(콜을 실시하는 것을 추천합니다)..resolve() 전에.parent

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

하세요.__file__신뢰할 수 없는 경우가 있습니다.Python에서 현재 실행 중인 파일의 경로를 얻으려면 어떻게 해야 합니까?


해 주세요, 그 세주주주 please please please please please please please please 。Path.cwd(),Path.resolve() 타 andPath메서드는 문자열이 아닌 경로 PosixPath개체를 반환합니다.Python 3.4 및 3.5에서는 내장 함수가 문자열 또는 바이트 개체에서만 작동할 수 있고 지원하지 않았기 때문에 약간의 문제가 발생했습니다.Path하지 않으면 안 그러면 안 됩니다.Path오브젝트를 문자열로 변환하거나 메서드를 사용하지만 후자 옵션에서는 이전 코드를 변경해야 합니다.

파일 스크립트/2화이

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 python python python python python python python python python python python python python python python python python python 。

PEP 519 — Python 3.6에서 구현된 파일 시스템 경로 프로토콜을 추가하면 함수에 객체 지원이 추가되므로 이제 합격할 수 있습니다.Path에 대한 오브젝트open접접: :

python3.6 scripts/2.py

OK
  1. 현재 디렉터리 전체 경로를 가져오려면 다음과 같이 하십시오.

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

    출력: "C:\Users\admin\myfolder"

  2. 현재 디렉토리 폴더 이름만 가져오려면

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

    출력: "myfolder"

다음과 같이 Pathlib를 사용하여 현재 스크립트를 포함하는 디렉토리를 가져올 수 있습니다.

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

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

OS에 구애받지 않는 방법:

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

Python 3.4가 .pathlib: ""을 사용하면 "Module"을 호출할 수 .pathlib.Path.cwd()Path현재 작업 디렉토리를 나타내는 오브젝트 및 기타 많은 신기능이 있습니다.

이 새로운 API에 대한 자세한 내용은 여기를 참조하십시오.

현재 디렉터리의 전체 경로를 가져오려면:

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에는 '1'을 합니다.os.getcwd() # Get working directory ★★★★★★★★★★★★★★★★★」os.chdir(r'D:\Steam\steamapps\common') # Set working directory


를 사용하는 것을 추천합니다.sys.argv[0]는, 「2」를 참조해 주세요.sys.argv 패스하고, 이 파일(오브젝트 패스)의 을 받지 .os.chdir()도 할 수 ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ, ㄴ ㄴ.

import os
this_py_file = os.path.realpath(__file__)

# vvv Below comes your code vvv #

근데 그 토막이랑sys.argv[0]PyInstaller에서 않기 에 PyInstaller에 의해 컴파일되면 하지 않거나 합니다.이는 매직 속성이 로 설정되어 있지 않기 때문입니다.__main__과 levelsys.argv[0]실행 파일이 호출된 방법입니다(작업 디렉토리의 영향을 받습니다).

언급URL : https://stackoverflow.com/questions/5137497/find-the-current-directory-and-files-directory

반응형