Python/Python Programming

[ Python ] shutil모듈의 rmtree 메소드를 이용한 하위 디렉토리와 파일 삭제

Pydole 2018. 5. 22. 21:54

 

shutil.rmtree로 삭제된 파일은 복구 할 수 없으므로, 유의하여 진행한다. 실무에서 사용할 경우 본인환경에서 충분한 테스트를 수행해야 한다.

 


 

shutil.rmtree('경로')와 같이 이용할 수 있으나 한번 삭제되면 복구될 수 없으니 고민하여 수행하는 것이 좋다.

 

 

 1. 삭제될 경로확인

 2. 해당 명령어가 실행될 경우 삭제되는 폴더와 파일

 3. 실행 전 Y / N 트리거

 


 파일삭제 전 os.path.walk를 이용해 삭제리스트를 출력한다. 폴더와 파일수가 많으면 os.listdir을 이용해 1depth만 출력할 수 있다.


  경로는 os.abspath를 이용해 상대경로가 입력되더라도 절대경로가 출력된다. 파일작업시 '절대경로''상대경로'의 결과값이 달라질 있으니 중요하고, 또 중요하다. 

 

import shutil
import os

def func1(dir):
    try:
        if os.listdir(dir):
            for (path, dir, files) in os.walk(os.path.abspath(dir)):
                print(path, files, sep='\t')

        excute()

    except Exception as e:
        return e

def excute():
    print('*'*100)
    print('* 삭제되는 디렉토리와 파일 리스트 입니다. 절대경로로 표기합니다.')
    print('* 경고! rmtree 메소드는 하위 디렉토리 및 모든파일들을 삭제합니다.')
    print('* 휴지통으로 복구할 수 없습니다. 필요시 반드시 백업하시기 바랍니다.')

    deleteKey = input('%s 해당폴더를 삭제하시겠습니까 [Y/N]' %os.path.abspath(dir))

    if deleteKey == 'y':
        try:
            shutil.rmtree(dir)
        except Exception as e:
            print(e)
    else:
        print('중단되었습니다.')


dir = 'D:\Backup'

print(func1(dir))

D:\Backup	['test1.txt', 'test2.txt', 'test3.txt']
****************************************************************************************************
* 삭제되는 디렉토리와 파일 리스트 입니다. 절대경로로 표기합니다.
* 경고! rmtree 메소드는 하위 디렉토리 및 모든파일들을 삭제합니다.
* 휴지통으로 복구할 수 없습니다. 필요시 반드시 백업하시기 바랍니다.
D:\Backup 해당폴더를 삭제하시겠습니까 [Y/N]y