etc./StackOverFlow

Python에 디렉토리가 있는지 확인하는 방법

청렴결백한 만능 재주꾼 2023. 4. 13. 10:23
반응형

질문자 :David542


Python의 os 모듈에는 다음과 같은 디렉토리가 있는지 찾는 방법이 있습니다.

 >>> os.direxists(os.path.join(os.getcwd()), 'new_folder')) # in pseudocode True/False


당신이 찾고있는 os.path.isdir , 또는 os.path.exists 당신이 파일이나 디렉토리인지 상관하지 않는 경우 :

 >>> import os >>> os.path.isdir('new_folder') True >>> os.path.exists(os.path.join(os.getcwd(), 'new_folder', 'file.txt')) False

pathlib 를 사용할 수 있습니다.

 >>> from pathlib import Path >>> Path('new_folder').is_dir() True >>> (Path.cwd() / 'new_folder' / 'file.txt').exists() False

phihag

Python 3.4는 파일 시스템 경로를 처리하기 위한 객체 지향 접근 방식을 제공하는 표준 라이브러리에 pathlib 모듈을 도입했습니다. is_dir()exists() (A)의 방법 Path 개체 질문에 대답 할 수 있습니다 :

 In [1]: from pathlib import Path In [2]: p = Path('/usr') In [3]: p.exists() Out[3]: True In [4]: p.is_dir() Out[4]: True

경로(및 문자열)는 / 연산자와 함께 결합될 수 있습니다.

 In [5]: q = p / 'bin' / 'vim' In [6]: q Out[6]: PosixPath('/usr/bin/vim') In [7]: q.exists() Out[7]: True In [8]: q.is_dir() Out[8]: False

Pathlib는 PyPi의 pathlib2 모듈을 통해 Python 2.7에서도 사용할 수 있습니다.


joelostblom

너무 가까이! os.path.isdir 은 현재 존재하는 디렉토리의 이름을 전달하면 True 존재하지 않거나 디렉토리가 아닌 경우 False 반환합니다.


Kirk Strauser

예, os.path.exists() .


aganders3

2개의 내장 함수로 확인할 수 있습니다.

 os.path.isdir("directory")

지정된 디렉토리를 사용할 수 있다는 사실을 부울 값으로 제공합니다.

 os.path.exists("directoryorfile")

지정된 디렉토리 또는 파일을 사용할 수 있는 경우 bolead true를 제공합니다.

경로가 디렉토리인지 확인하려면;

os.path.isdir("directorypath")

경로가 디렉토리이면 boolean true를 제공합니다.


Wickkiey

예 사용 os.path.isdir(경로)


RanRag

에서와 같이:

 In [3]: os.path.exists('/d/temp') Out[3]: True

아마 확실하게 하기 위해 os.path.isdir(...) 에 던지십시오.


AlG

os.stat 버전(python 2)을 제공하기 위해:

 import os, stat, errno def CheckIsDir(directory): try: return stat.S_ISDIR(os.stat(directory).st_mode) except OSError, e: if e.errno == errno.ENOENT: return False raise

Tyler A.

os는 다음과 같은 많은 기능을 제공합니다.

 import os os.path.isdir(dir_in) #True/False: check if this is a directory os.listdir(dir_in) #gets you a list of all files and directories under dir_in

입력 경로가 유효하지 않으면 listdir에서 예외가 발생합니다.


dputros

디렉토리가 없는 경우 디렉토리를 생성할 수도 있습니다.

소스 , SO에 여전히 있는 경우.

==================================================== ====================

Python ≥ 3.5에서는 pathlib.Path.mkdir 사용합니다.

 from pathlib import Path Path("/my/directory").mkdir(parents=True, exist_ok=True)

이전 버전의 Python의 경우 각각 작은 결함이 있는 좋은 품질의 두 가지 답변이 있으므로 이에 대한 답변을 드리겠습니다.

os.path.exists 시도하고 생성을 위해 os.makedirs 를 고려하십시오.

 import os if not os.path.exists(directory): os.makedirs(directory)

주석 및 다른 곳에서 언급했듯이 경쟁 조건이 있습니다. os.path.existsos.makedirs 호출 os.makedirs OSError 와 함께 실패합니다. OSError 포괄적으로 포착하고 계속하는 것은 권한 부족, 디스크 가득 참 등과 같은 다른 요인으로 인한 디렉토리 생성 실패를 무시하기 때문에 완벽하지 않습니다.

한 가지 옵션은 OSError 를 트래핑하고 포함된 오류 코드를 검사하는 것입니다(Python의 OSError에서 정보를 가져오는 플랫폼 간 방법 참조).

 import os, errno try: os.makedirs(directory) except OSError as e: if e.errno != errno.EEXIST: raise

또는 두 번째 os.path.exists 가 있을 수 있지만 첫 번째 확인 후에 다른 사람이 디렉터리를 생성한 다음 두 번째 확인 전에 디렉터리를 제거했다고 가정합니다. 여전히 속일 수 있습니다.

응용 프로그램에 따라 동시 작업의 위험은 파일 권한과 같은 다른 요인으로 인한 위험보다 많거나 적을 수 있습니다. 개발자는 구현을 선택하기 전에 개발 중인 특정 응용 프로그램과 예상 환경에 대해 더 많이 알아야 합니다.

FileExistsError (3.3 이상에서)를 노출하여 이 코드를 상당히 개선합니다.

 try: os.makedirs("path/to/directory") except FileExistsError: # directory already exists pass

... 그리고 허용하여 에 키워드 인수 os.makedirs 라는 exist_ok (3.2 이상에서)를.

 os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.

Nathan

#You can also check it get help for you if not os.path.isdir('mydir'): print('new directry has been created') os.system('mkdir mydir')

JoboFive

편리한 Unipath 모듈이 있습니다.

 >>> from unipath import Path >>> >>> Path('/var/log').exists() True >>> Path('/var/log').isdir() True

필요한 기타 관련 사항:

 >>> Path('/var/log/system.log').parent Path('/var/log') >>> Path('/var/log/system.log').ancestor(2) Path('/var') >>> Path('/var/log/system.log').listdir() [Path('/var/foo'), Path('/var/bar')] >>> (Path('/var/log') + '/system.log').isfile() True

pip를 사용하여 설치할 수 있습니다.

 $ pip3 install unipath

pathlib 와 유사합니다. 차이점은 모든 경로를 문자열로 취급한다는 것입니다( Path str 의 하위 클래스임). 따라서 일부 함수가 문자열을 예상하는 경우 문자열로 변환할 필요 없이 Path

예를 들어, 이것은 Django 및 settings.py 잘 작동합니다.

 # settings.py BASE_DIR = Path(__file__).ancestor(2) STATIC_ROOT = BASE_DIR + '/tmp/static'

Max Malysh

다음 코드는 코드의 참조 디렉토리가 존재하는지 여부를 확인하고, 직장에 없으면 생성합니다.

 import os if not os.path.isdir("directory_name"): os.mkdir("directory_name")

sksoumik

두가지

  1. 디렉토리가 존재하는지 확인하시겠습니까?
  2. 그렇지 않은 경우 디렉터리를 만듭니다(선택 사항).
 import os dirpath = "<dirpath>" # Replace the "<dirpath>" with actual directory path. if os.path.exists(dirpath): print("Directory exist") else: #this is optional if you want to create a directory if doesn't exist. os.mkdir(dirpath): print("Directory created")

Uday Kiran

출처 : http:www.stackoverflow.com/questions/8933237/how-to-find-if-directory-exists-in-python

반응형