Python에서 파일 존재 여부 확인: os,, glob

1. 파이썬에서 파일 존재 여부 확인하기

소개

파일이 존재하는지 확인하는 것은 프로그램 안정성을 높이는 데 필수적입니다. 예를 들어 데이터를 읽거나 쓸 때 대상 파일이 없으면 오류가 발생하고 프로그램 실행이 중단됩니다. 파이썬에서는 파일 존재 여부를 확인하는 여러 방법이 있으며, 상황에 맞는 방법을 선택하는 것이 중요합니다.

이 글에서는 os 모듈, pathlib 모듈, glob 모듈을 이용한 파일 확인 방법을 소개하고 각 접근법의 장점을 설명합니다.

2. 기본 접근법: os 모듈

os.path.exists() 사용법

os.path.exists()는 지정된 경로가 파일이든 디렉터리든 존재하는지를 확인합니다. 존재하면 True, 존재하지 않으면 False를 반환합니다.

import os

if os.path.exists("example.txt"):
    print("The file exists")
else:
    print("The file does not exist")

이 코드는 example.txt가 존재하는지 확인하고 결과에 따라 메시지를 출력합니다. os.path.exists()는 파일과 디렉터리 모두를 확인할 수 있는 일반적인 방법입니다.

os.path.isfile()와 os.path.isdir() 선택하기

os.path.exists()는 파일과 디렉터리를 구분하지 않지만, os.path.isfile() 또는 os.path.isdir()를 사용하면 대상이 파일인지 디렉터리인지 판단할 수 있습니다.

if os.path.isfile("example.txt"):
    print("This is a file")
elif os.path.isdir("example.txt"):
    print("This is a directory")
else:
    print("It does not exist")

이처럼 대상 존재를 확인한 뒤 파일인지 디렉터리인지 판단하면 보다 세밀한 작업을 수행할 수 있습니다.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. 고급: pathlib 모듈

Path.exists() 메서드 사용

pathlib에서는 Path.exists() 메서드를 사용해 파일이나 디렉터리가 존재하는지 확인할 수 있습니다. os.path.exists()와 마찬가지로 True 또는 False를 반환하지만, 코드가 더 간결해집니다.

from pathlib import Path

file_path = Path("example.txt")

if file_path.exists():
    print("The file exists")
else:
    print("The file does not exist")

이 접근법에서는 파일 경로를 Path 객체로 다루므로 객체‑지향 방식으로 코드를 작성할 수 있어 유지보수가 쉬워집니다.

Path.is_file() 및 Path.is_dir()

pathlibis_file()is_dir() 메서드도 제공하여 파일인지 디렉터리인지 쉽게 구분할 수 있게 해줍니다.

if file_path.is_file():
    print("This is a file")
elif file_path.is_dir():
    print("This is a directory")

따라서 pathlib을 사용하면 파일 존재 여부를 확인할 뿐만 아니라 대상이 파일인지 디렉터리인지도 손쉽게 판단할 수 있습니다.

실제 적용 사례

pathlib은 여러 디렉터리와 파일을 다루는 프로젝트에서 특히 유용합니다. 복잡한 경로 작업을 간단히 작성할 수 있고, 동일한 코드가 다양한 플랫폼에서 동작하므로 크로스‑플랫폼 개발에 최적입니다.

4. 파이썬에서 파일 존재 여부 확인하기: glob 모듈 사용법

glob을 이용한 패턴 매칭

glob 모듈은 파일명이나 경로 패턴을 기반으로 파일을 검색할 수 있게 해줍니다. 한 번에 특정 기준을 만족하는 모든 파일을 확인하고 싶을 때 유용합니다. 특히 파일 수가 많을 때 효과적입니다.

import glob

files = glob.glob('*.txt')

if files:
    print("Text files found")
else:
    print("No text files found")

이 코드는 현재 디렉터리에서 모든 .txt 파일을 리스트로 가져와 존재 여부를 확인합니다. 특정 파일 유형이나 패턴에 따라 대량으로 파일을 검색할 수 있어 백업 파일 관리 등 다양한 작업에 활용할 수 있습니다.

실제 적용 사례

glob은 파일이나 폴더의 수가 많을 때, 또는 특정 이름이나 확장자와 일치하는 파일을 효율적으로 처리해야 할 때 적합합니다. 예를 들어, 로그 파일이나 임시 파일을 정기적으로 확인하고 관리하는 작업에 이상적입니다.

侍エンジニア塾

5. 예외 처리를 사용한 안전한 파일 작업

파일이 존재하지 않을 때 오류를 방지하기 위해 예외 처리를 사용하는 것도 중요합니다. try-except 구문을 사용하면 오류로 인해 프로그램이 중단되는 것을 방지하고 사용자에게 오류 메시지를 표시할 수 있습니다.

try:
    with open("example.txt") as f:
        print(f.read())
except FileNotFoundError:
    print("The file does not exist")

이 코드에서 파일이 존재하지 않을 경우 FileNotFoundError를 잡아서 프로그램이 충돌하지 않고 오류 메시지를 표시합니다. 이는 사용자 경험을 향상시키고 프로그램의 안정성을 높입니다.

6. 요약

Python에서 파일 존재 여부를 확인하는 방법으로는 os 모듈, pathlib 모듈, glob 모듈 등 다양한 접근 방식이 있습니다. 각 방법은 시나리오에 따라 장점이 있으며, 적절한 것을 선택하는 것이 중요합니다.

  • 간단한 존재 확인의 경우 os.path.exists()가 최적입니다.
  • 복잡한 경로 조작이나 크로스 플랫폼 지원이 필요할 때 pathlib가 유용합니다.
  • 패턴 기반 검색의 경우 glob 모듈이 효과적입니다.

이러한 방법을 적절히 이해하고 사용함으로써 Python에서 파일 작업을 효율적이고 안전하게 수행할 수 있습니다. 다음 단계로 파일 읽기, 쓰기, 삭제, 복사에 대해 학습하는 것을 추천합니다.