반응형
질문
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: # 존재합니다.
반응형
댓글