차밍이

[Python] 파일 및 폴더 디렉토리 삭제하는 법 총정리 본문

파이썬/기본 문법 정리

[Python] 파일 및 폴더 디렉토리 삭제하는 법 총정리

2022. 12. 13. 16:20
반응형

목차

    이번 게시글을 통해 파이썬을 사용해서 파일 및 폴더를 삭제하는 방법에 대해서 알아보겠습니다.

    1. 특정 파일을 삭제하는 방법 : os.remove & os.unlink
    2. 디렉토리 삭제 방법 : os.rmdir & os.removedir
    3. 디렉토리와 내부 파일을 모두 삭제하는 방법 : shutil.rmtree
    4. Error 대처 방법
    5. 전체 정리 소스코드

     

    1. File 삭제 방법

    os.remove('file_path')
    os.unlink('file_path')

    file_path 부분에 "E:/Data/Combine/History" 이와 같은 절대 경로 혹은 "Combine/History" 이와 같은 상대 경로를 모두 인식할 수 있습니다.

    os.removeos.unlink는 같은 의미로 사용되며, 같은 기능을 합니다.

    unlink가 UNIX 환경에서 더 적합하다고 합니다.

     

    2. Directory 삭제 방법 / Folder 삭제 방법

    os.rmdir('empty_directory_path')

    os 모듈을 사용해서 디렉토리를 삭제할 수 있습니다.

    empty_directory_path 부분에 삭제할 경로의 주소를 적어주면 됩니다.

    os.rmdir의 경우 빈 디렉토리만 삭제할 수 있습니다.

    하위 디렉토리 혹은 파일이 존재하면 삭제되지 않고 Error를 발생시킵니다.

    비어있지 않은 경우 삭제를 원하면 3번의 방법을 사용하면 됩니다.

     

    3. 파일과 디렉토리 모두 삭제 방법

    폴더와 내부의 파일들을 모두 삭제하기 위해서는 shutil 모듈을 사용하면 편하게 할 수 있습니다.

    import shutil
    
    shutil.rmtree('directory_path')

    directory_path 부분에 원하는 폴더의 주소를 넣어주면 됩니다.

    그러면 하위 폴더 및 dirs 모두 삭제됩니다.

     

    4. 오류 대처 방법

    파이썬을 사용해 파일을 제거하는 과정에서 다양한 오류가 발생하기 쉽습니다.

    이러한 경우 대처방법입니다.

    4.1 파일 존재 여부 확인

    os.path.exists('file_path')

    무조건 os.remove를 사용하면 파일이 존재하지 않을 때, 오류를 발생할 수 있습니다.

    그러므로 exist를 통해서 해당 파일이 존재하는지 먼저 체크하면 방지할 수 있습니다.

    4.2 파일인지 확인하기

    os.path.isfile('file_path')

    os.path.isfile을 사용해서 file인지 확인할 수 있습니다.

    이를 directory인 경우 os.remove를 수행하면 에러를 발생시킵니다.

    따라서 먼저 파일인지 확인 후 제거해주는 것도 좋은 방법입니다.

    4.3 디렉토리인지 확인하기

    os.path.isdir('directory_path')

    디렉토리인지 확인하고 지우면, 파일 제거와 구분해서 사용할 수 있습니다.

    4.4 try - except 문 사용하기

    굳이굳이 확인하기 귀찮다면 try - except 문을 사용해서 삭제하면 됩니다.
    try - except 문을 사용하는 것이 도 Pythonic 한 방법이라고하니 기호에 맞게 사용하시면 되겠습니다.

    file_path = "E:/Data/Combine/History/test.txt"
    
    try:
        os.remove(file_path)
    except:
        print('파일이 없는데용 ㅇㅅㅇ??')

     

    5. 종합 소스 코드

    import os
    import shutil
    
    file_path = "E:/Data/Combine/History/test.txt"
    dir_path = "E:/Data/Combine/History"
    
    def delete(path):
        if os.path.isfile(path):
            os.remove(path)
        elif os.path.isdir(path):
            shutil.rmtree(path)
        else:
            raise ValueError("해당 경로를 확인해주세요")
    
    delete(file_path)
    delete(dir_path)

    위와 같은 코드로 작성해서 파일인 경우와 디렉토리인 경우 모두 문제 없이 삭제할 수 있도록 할 수 있습니다.

    반응형

    관련된 글 보기

    Comments