| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- office
- 파워포인트
- 파이썬GUI
- 엑셀
- Android
- 윈도우10
- 안드로이드
- html
- 윈도우11
- VBA
- Outlook
- git
- python3
- win32com
- 파이썬
- 아웃룩
- python
- pyqt5
- 깃
- Windows11
- 문자열
- Windows10
- pythongui
- matlab
- 비주얼베이직
- windows
- Excel
- pandas
- 오피스
- 파이썬3
Appia의 IT세상
파이썬 파일·디렉터리 유무 확인 방법: os.path vs pathlib, 예외 처리까지 본문
파이썬 파일·디렉터리 유무 확인 방법: os.path vs pathlib, 예외 처리까지

최종 업데이트: 2026-01-06
파이썬에서 파일/디렉터리 존재 여부를 확인하는 방법을 pathlib 중심으로 정리하겠습니다. exists/is_file/is_dir 차이, 권한/심볼릭 링크/레이스 컨디션, 안전한 try/except 패턴까지 예제로 설명합니다.
TL;DR
- 파일/폴더 존재 확인: Path(path).exists()
- 파일인지 확인: Path(path).is_file()
- 폴더인지 확인: Path(path).is_dir()
- “확인 후 열기” 대신 가능하면 try: open(...) 패턴이 더 안전
이번 포스팅은 실제 특정 파일이 존재 유무를 확인하는 기능 및 방법을 다루도록 하겠습니다. 저의 경우에 설정 파일 및 파일 불러오기를 할때에, 디렉터리 및 파일 유무에 대해서 확인을 하고 진행을 합니다. 만약 해당 파일이 없을 경우에 기본값으로 생성하고 읽어오게 하는 경우가 매우 흔합니다. 해당해서 관련된 방법에 대해서 살펴보도록 하겠습니다.
※ 이 글은 2026년 1월 기준으로 내용이 보완 및 업데이트되었습니다.
pathlib(Path)로 확인하기
os.path도 여전히 많이 사용되고 있습니다. 하지만, 최근에는 pathlib.Path를 많이 사용되고 있습니다. 아마도, 가독성과 확장성 측면에서 사람들의 선호도를 끌어낸 것이라고 생각합니다. 그러면 간단한 예제를 살펴보겠습니다.
from pathlib import Path
p_file = Path("config.json")
p_dir = Path("logs")
print(p_file.exists()) # 파일/폴더 상관없이 존재하면 True
print(p_file.is_file()) # "파일"이면 True
print(p_dir.is_dir()) # "디렉터리"이면 True
exists / is_file / is_dir 차이
- exists() : 경로가 존재하면 True (파일이든 디렉토리든 상관 없음)
- is_file() : 해당 경로가 존재하고, 그게 “파일”이면 True
- is_dir() : 해당 경로가 존재하고, 그게 “디렉터리(폴더)”면 True
os.path로도 동일하게 가능
앞선 단계에서는 pathlib을 활용했다면, 이번에는 고전 방법인 os.path 방식을 활용해보겠습니다.
import os
print(os.path.exists("config.json"))
print(os.path.isfile("config.json"))
print(os.path.isdir("logs"))
os.path.exists / isfile / isdir 차이
- os.path.exists(path) : 경로가 존재하면 True (파일이든 디렉토리든 상관 없음)
- os.path.isfile(path) : 해당 경로가 존재하고, 그게 “파일”이면 True
- os.path.isdir(path) : 해당 경로가 존재하고, 그게 “디렉터리(폴더)”면 True
실전활용: try/except 활용
보통 아래 예시와 같이 조건문으로 해당 파일 여부를 확인하고 파일을 읽는 형태로 합니다.
from pathlib import Path
p = Path("config.json")
if p.exists():
data = p.read_text(encoding="utf-8")
물론 이 부분이 틀리지는 않았지만, 존재 확인 직후 파일 읽는 과정 사이에서 파일이 지워지거나 권한이 바뀌면 예외가 발생할 수 있습니다. 이 부분을 방지하기 위해서 try/except 방식을 활용합니다.
from pathlib import Path
p = Path("config.json")
try:
data = p.read_text(encoding="utf-8")
except FileNotFoundError:
data = "{}" # 없으면 기본값
except PermissionError:
raise RuntimeError("config.json을 읽을 권한이 없습니다.")
추가로 자주 사용하는 방식을 하나 소개해 드릴까 합니다. 파일 확인 후, 없으면 생성하는 형태입니다.
from pathlib import Path
import json
config_path = Path("config.json")
default_config = {
"ID": "APPIA",
"password": "APPIA1"
}
if not config_path.exists():
config_path.write_text(json.dumps(default_config, ensure_ascii=False, indent=2), encoding="utf-8")
config = json.loads(config_path.read_text(encoding="utf-8"))
print(config)
반드시 확인 및 주의 사항
Path("config.json").exists() == True 라고 해서 그게 파일이라는 보장은 없습니다. 폴더(디렉터리)여도 exists()는 True가 됩니다. 그래서 “파일을 읽거나 열어야 하는 상황”이면 is_file()로 확인하는 게 안전합니다.

이번 포스팅에서는 pathlib을 바탕으로 파일/폴더가 존재하는 지 확인하는 방법에 대해서 살펴봤습니다. 간단히 실전에서 사용할 수 있는 간단한 예시도 함께 다루어봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.
파이썬[Python] 리스트(List) 역순으로 만들기, 뒤집기 (reversed / reverse / 슬라이싱 비교)
파이썬[Python] 리스트(List) 역순으로 만들기,뒤집기(reversed / reverse / 슬라이싱 비교) 파이썬에서 list를 역순으로 다루는 방법은 생각보다 다양합니다. 경우에 따라서는 단순히 뒤에서부터 값을 읽
appia.tistory.com
파이썬 리스트 비교 6가지 방법: 순서/중복/교집합/차집합/인덱스 비교
파이썬 리스트 비교 6가지 방법: 순서/중복/교집합/차집합/인덱스 비교 이번 포스팅에서는 파이썬에서 자주 사용하는 리스트를 비교하는 방법을 정리해보겠습니다. 리스트 비교는 단순히 값만
appia.tistory.com
'Python > Python 응용' 카테고리의 다른 글
| 파이썬[Python] 031 날짜와 시간 출력하기(time) (0) | 2020.01.05 |
|---|---|
| 파이썬 리스트 비교 6가지 방법: 순서/중복/교집합/차집합/인덱스 비교 (2) | 2019.12.30 |
| 파이썬 [Python] 018 win32com 이용 Excel파일 CSV파일로 저장하기 (0) | 2019.12.29 |
| 파이썬 [Python] 017 win32com 이용하여 Excel 제어하기 (2) | 2019.12.29 |
| 파이썬 [Python] 016 최대 공약수 최소 공배수 구하기, 유클리드 호제법 (0) | 2019.12.29 |
