본문 바로가기
Python/Python FAQ

Python 예외 없이 파일이 존재하는지 확인하는 방법은 무엇인가요?, How do I check whether a file exists without exceptions?

by 베타코드 2023. 5. 4.
반응형

질문

try 문을 사용하지 않고 파일이 존재하는지 여부를 어떻게 확인할 수 있나요?

답변

파일이 존재하는지 확인하는 이유가 if file_exists: open_it()와 같이 무언가를 수행하기 위한 것이라면, 열기를 시도하기 전에 try를 사용하는 것이 더 안전합니다. 확인한 후에 열면 확인한 시점과 열기를 시도하는 시점 사이에 파일이 삭제되거나 이동되는 등의 문제가 발생할 수 있습니다.

파일을 즉시 열 계획이 없다면 os.path.isfile을 사용할 수 있습니다.

경로가 존재하는 일반 파일이면 True를 반환합니다. 이 함수는 심볼릭 링크를 따르므로 같은 경로에 대해 islink()isfile() 둘 다 참일 수 있습니다.

import os.path os.path.isfile(fname)  

파일임을 확신해야 하는 경우에 사용합니다.

Python 3.4부터는 pathlib 모듈이 객체 지향적인 접근 방식을 제공합니다(Python 2.7에서는 pathlib2로 백포트됨):

from pathlib import Path  my_file = Path("/path/to/file") if my_file.is_file():     # 파일이 존재합니다. 

디렉터리를 확인하려면 다음을 수행합니다:

if my_file.is_dir():     # 디렉터리가 존재합니다. 

Path 객체가 파일인지 디렉터리인지와 관계없이 존재하는지 확인하려면 exists()를 사용합니다:

if my_file.exists():     # 경로가 존재합니다. 

또한 try 블록에서 resolve(strict=True)을 사용할 수도 있습니다:

try:     my_abs_path = my_file.resolve(strict=True) except FileNotFoundError:     # 존재하지 않습니다. else:     # 존재합니다. 
반응형

댓글