python 뿐만 아니라 코딩을 하다보면 특정 디렉토리의 존재 여부, 혹은 특정 파일의 존재여부를 확인해야 할 경우가 종종 존재한다. 


이 때에는 해당 디렉토리, 파일 존재 여부를 확인하는 API를 사용해서 확인해야 한다. 


python에서는 os module내에 isdir, isfile API를 제공해서 해당 기능을 사용하도록 하고 있다. 


docs.python.org 에서의 정의 (isfile, isdir)



isfile과 isdir 파일 모두 argument로 확인을 원하는 파일 혹은 디렉토리의 경로를 넣어주면 되고, 그 결과로 존재할 경우 True, 존재하지 않을 경우 False를 return하게 된다.


실 사용예는 다음과 같다.


os.path.isdir() 의 사용



>>> import os
>>> os.path.isdir("~/temp")
False
>>> os.path.isdir("/home/ubuntu/temp")
True
>>>


-. 위의 예제와 같이 home directory를 의미하는 ~/ 는 사용이 불가능하다. 

-. 실제 디렉토리가 존재할 경우 정상적으로 True를 리턴해준다.



os.path.isfile() 의 사용



>>> import os
>>> os.path.isfile("/home/ubuntu/test_a.txt")
False
>>> os.path.isfile("/home/ubuntu/test.txt")
True
>>> os.path.isfile("test.txt")
True
>>>

-. 위의 예제에서는 /home/ubuntu/test.txt 파일이 존재하는 상황이다. 

-. 존재하지 않는 test_a.txt를 확인할 경우는 False를 return 한다.

-. 존재하는 test.txt를 확인할 경우에는 True를 return하고 있다. 

-. 절대 경로를 사용하지 않고 파일명만 적어줄 경우 현재 python 을 실행한 디렉토리의 파일의 결과를 return한다.



잘못된 os.path.isdir() 의 사용



만약 isdir에 파일명을 인자로 넘기면 어떤 경과가 return될까?


>>> os.path.isdir("/home/ubuntu/temp.txt")
False


위와 같이 실제 존재하는 파일에 대해서 isdir을 사용하면 False가 return 된다.


파일과 디렉토리에 대해서 잘 구분해서 isdir, isfile 을 사용해야 겠다.

저작자 표시 비영리 변경 금지
신고