SW/Python

Python : 파일 또는 디렉토리 존재 여부 확인 방법, 예제, 명령어

얇은생각 2021. 9. 10. 07:30
반응형

Python 스크립트를 작성할 때 파일 또는 디렉토리가 존재하는지 여부에 관계없이 특정 작업을 수행할 수 있습니다. 예를 들어 구성 파일에 데이터를 읽거나 쓰거나 파일이 없는 경우에만 파일을 생성할 수 있습니다.

Python에서는 파일의 존재 여부를 확인하고 파일 유형을 확인하는 다양한 방법이 있습니다.

파일의 존재 여부를 확인하는 세 가지 방법을 보여 줍니다.

 

 

Python : 파일 또는 디렉토리 존재 여부 확인 방법, 예제, 명령어

 

 

파일이 있는지 확인

파일이 있는지 확인하는 가장 간단한 방법은 파일을 열어 보는 것입니다. 이 방식은 모듈을 가져올 필요가 없으며 Python 2와 3 모두에서 작동합니다. 파일을 열고 몇 가지 작업을 수행하려면 이 방법을 사용하십시오. 

다음 조각에서는 단순 try-except 블록을 사용합니다. filename.txt를 열고, 파일이 존재하지 않으면 IO 오류 예외가 발생하고 "File not accessable"(파일 액세스 불가) 메시지가 인쇄됩니다.

try:
    f = open("filename.txt")
    # Do something with the file
except IOError:
    print("File not accessible")
finally:
    f.close()

 

 

Python 3을 사용하는 경우 IOError 예외 대신 FileNotFoundError를 사용할 수도 있습니다.

파일을 열 때는 키워드와 함께 를 사용하는 것이 좋습니다. 이렇게 하면 작업 중에 예외가 발생하더라도 파일 작업이 완료된 후 파일이 올바르게 닫히도록 할 수 있습니다. 또한 닫기 기능을 사용하여 파일을 닫을 필요가 없으므로 코드가 짧아집니다.

다음 코드는 이전 예와 동일합니다.

try:
    with open('/etc/hosts') as f:
        print(f.readlines())
        # Do something with the file
except IOError:
    print("File not accessible")

 

 

위의 예에서는 try-exclude 블록을 사용하여 레이싱 조건을 피하기 위해 파일을 열었습니다. 경합 조건은 둘 이상의 프로세스가 동일한 파일에 액세스하는 경우에 발생합니다.

예를 들어 파일의 존재를 확인하는 경우 다른 프로세스에서 검사와 파일 열기 사이의 시간 내에 파일을 생성, 삭제 또는 차단할 수 있습니다. 이로 인해 코드가 끊어질 수 있습니다.

 

 

 

os.path 모듈을 사용하여 파일이 존재하는지 확인

os.path 모듈은 경로 이름 작업에 유용한 몇 가지 기능을 제공합니다. 이 모듈은 Python 2와 3 모두에서 사용할 수 있습니다.

맥락에서 가장 중요한 기능은 다음과 같습니다.

os.path.existes(경로) - 경로가 파일, 디렉터리 또는 유효한 심볼 링크인 경우 true를 반환합니다.

os.path.isfile(경로) - 경로가 일반 파일이거나 파일에 대한 심볼 링크인 경우 true를 반환합니다.

os.path.isdir(path) - 경로가 디렉토리이거나 디렉토리에 대한 심볼 링크인 경우 true를 반환합니다.

다음은 문에서 filename.txt 존재 여부를 확인하는 경우입니다.

import os.path

if os.path.isfile('filename.txt'):
    print ("File exist")
else:
    print ("File not exist")

 

 

파일에 대한 작업을 수행하기 전에 파일의 존재 여부를 확인해야 하는 경우 이 방법을 사용하십시오. 예를 들어 파일을 복사하거나 삭제합니다.

파일을 열고 수정하려면 이전 방법을 사용하는 것이 좋습니다.

 

 

 

pathlib 모듈을 사용하여 파일이 있는지 확인

pathlib 모듈은 Python 3.4 이상에서 사용할 수 있습니다. 이 모듈은 다양한 운영 체제의 파일 시스템 경로 작업을 위한 객체 지향 인터페이스를 제공합니다.

이전 예제와 마찬가지로 다음 코드는 filename.txt 존재 여부를 확인합니다.

from pathlib import Path

if Path('filename.txt').is_file():
    print ("File exist")
else:
    print ("File not exist")

 

 

경로가 일반 파일이거나 파일에 대한 심볼 링크인 경우 is_file은 true를 반환합니다. 디렉토리 존재 여부를 확인하려면 is_dir 메서드를 사용합니다.

pathlib와 os.path의 주요 차이점은 pathlib를 사용하면 일반 str 개체가 아닌 관련 메서드와 특성을 가진 경로 개체로 작업할 수 있다는 점입니다. 

Python 2에서 이 모듈을 사용하려면 pip을 사용하여 설치할 수 있습니다.

pip install pathlib2

 

반응형