Python에서 파일 존재 여부를 확인하는 두 가지 방법
컴퓨터에 특정 파일이 존재하는지 확인해야 하는 경우는 프로그래밍에서 매우 흔합니다. 예를 들어 파일을 열기 전에 해당 파일이 실제로 있는지 먼저 검사하면 불필요한 오류를 예방할 수 있습니다. Python에서는 크게 두 가지 방법으로 파일의 존재 여부를 확인할 수 있습니다.
1. os.path 모듈의 isfile() 함수 사용
가장 간단하고 널리 사용되는 방법은 os.path 모듈의 isfile() 함수를 활용하는 것입니다. 이 함수는 지정된 경로에 파일이 존재하면 True를 반환하고, 존재하지 않으면 False를 반환합니다.
>>> import os
>>> os.path.isfile("d:\\Package1\\package1\\fibo.py")
True
>>> os.path.isfile("d:/Package1/package1/fibo.py")
True
>>> os.path.isfile("d:\\nonexisting.txt")
False
주의할 점: 경로 문자열에서 백슬래시(\)를 사용하려면 반드시 두 개의 백슬래시(\\)를 입력해야 합니다. 이는 Python 문자열에서 백슬래시가 이스케이프 문자로 해석되기 때문입니다. 위 예제에서 볼 수 있듯이 슬래시(/)를 사용하면 이스케이프 처리 없이 그대로 사용할 수 있어 더욱 편리합니다.
2. IOError 예외 처리를 통한 확인
또 다른 방법은 open() 함수를 호출했을 때 발생하는 IOError 예외를 활용하는 것입니다. 존재하지 않는 파일을 열려고 시도하면 Python이 자동으로 이 예외를 발생시키므로, 이를 try-except 블록으로 처리하면 됩니다.
try:
fo = open("d:\\nonexisting.txt", "r")
# 파일을 연 후 필요한 작업 처리
pass
fo.close()
except IOError:
print ("파일이 존재하지 않습니다")
어떤 방법을 선택해야 할까?
두 방법各有 장단점이 있습니다. 단순히 파일의 존재 여부만 빠르게 확인하고 싶다면 os.path.isfile() 함수가 적합합니다. 반면, 파일을 곧바로 열어 작업을 수행해야 하는 상황이라면 예외 처리 방식이 코드를 더 깔끔하게 만들어 줍니다. 참고로 최신 Python(3.4 이상)에서는 pathlib.Path.exists() 메서드도 유용한 대안으로 널리 사용되고 있습니다.