os.path.exists와 os.path.isdir의 장단점


78

나는 디렉토리가 존재하는지 확인하고있어,하지만 난 내가 사용주의 os.path.exists대신에 os.path.isdir. 둘 다 잘 작동하지만 .NET isdir대신 사용하는 이점이 무엇인지 궁금 exists합니다.

답변:


131

os.path.existsTrue해당 이름의 일반 파일이있는 경우 에도 반환 됩니다.

os.path.isdirTrue해당 경로가 존재하고 디렉토리이거나 디렉토리에 대한 심볼릭 링크 인 경우 에만 반환 됩니다.


1
os.path.isdirsymlink에서 나를 위해 true를 반환합니다.
Kaz

나는 무엇입니까 os.path.isdir('.ipynb_checkpoints')진정한 반환
리틀 바비 테이블

Python 2.7에서 os.path.isdir은 디렉토리에 대한 심볼릭 링크에 대해 true를 반환하고 파일에 대한 심볼릭 링크에 대해 false를 반환합니다 (예상대로). 그러나 이것은 디렉토리에 대한 심볼릭 링크 인 경우에도 심볼릭 링크에서 실패하기 때문에 os.rmdir에 문제를 일으킬 수 있습니다.
Halsafar

6

마치 경로가 존재하지만 디렉토리가 아닌 파일이면 isdir을 반환 False합니다. 한편, 두 경우 모두 exists반환 True됩니다.


2

os.path.isdir () 은 경로가 존재하고 디렉토리인지 확인하고 케이스에 대해 TRUE를 반환합니다.

마찬가지로 os.path.isfile () 은 경로가 존재하고 파일인지 확인하고 케이스에 대해 TRUE를 반환합니다.

그리고 os.path.exists () 는 경로가 존재하는지 확인하고 경로가 파일이나 디렉토리를 가리키는 지 상관하지 않고 두 경우 모두 TRUE를 반환합니다.


0

대부분의 경우 동일합니다.

그러나 경로는 물리적으로 존재할 수 있지만 path.exists()False를 반환합니다. os.stat ()가이 파일에 대해 False를 반환하는 경우입니다.

경로가 물리적으로 존재 path.isdir()하면 항상 True를 반환합니다. 이것은 플랫폼에 의존하지 않습니다.


마지막 단락이 무엇을 의미하는지 명확하지 않습니다. 디렉터리가 원격 서버에 물리적으로 존재하지만 스크립트를 실행중인 네트워크 연결이없는 isdir()경우 디렉터리가 있는지 여부를 알 수 없습니다.
LarsH

디렉토리가 UNC 경로에 있는지 확인하는 경우 os.path.exists는 실제로 존재하는 경우 (연결이 작동하더라도) false를 반환 할 수 있지만 os.path.isdir은 올바른 값을 반환합니다. 유사한 UNC 경로 케이스에있는 파일의 경우 동일한 이유로 os.path.exists 대신 os.path.isfile을 사용해야합니다.
miigotu

0

os.path.exists (path) 경로가 기존 경로를 참조하면 True를 반환합니다. 기존 경로는 일반 파일 ( http://en.wikipedia.org/wiki/Unix_file_types#Regular_file ) 일 수 있지만 특수 파일 (예 : 디렉토리) 일 수도 있습니다. 따라서 본질적으로이 함수는 제공된 경로가 파일 시스템에 어떤 형태로든 존재하는 경우 true를 반환합니다 (단선 된 심볼릭 링크와 같은 몇 가지 예외에도 불구하고).

os.path.isdir (path)는 경로가 디렉토리를 가리키는 경우에만 true를 반환합니다.


1
이것은 두 명령의 차이점을 묻는 OP의 질문에 실제로 대답하지 않습니다. 상세한 것은 하나뿐입니다.
esqew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.