민서네집

[python] Directory Tree 삭제하기 본문

Python

[python] Directory Tree 삭제하기

브라이언7 2014. 5. 28. 13:36

python 에서 하위 디렉터리까지 한꺼번에 삭제를 하기 위한 스크립트.


shutil.rmtree() 메서드를 호출할 때, ignore_errors=True 로 하면 파일이 사용 중이라서 삭제를 못했을 때도 에러 메시지가 표시가 되지 않으므로 주의할 것.


remove_readonly()를 만든 이유는 shutil.rmtree()를 호출 시 읽기 전용 폴더 속성이면 지워지면서도 에러 메시지를 출력하기 때문에, 에러 메시지를 안 나오게 하기 위해 속성을 쓰기 속성으로 바꿔주는 것이다.


# remove_dir.py
#
# Directory Tree 삭제하기

import os
import stat
import shutil

# [출처] http://stackoverflow.com/questions/2656322/python-shutil-rmtree-fails-on-windows-with-access-is-denied		
def remove_readonly(func, path, excinfo):
	os.chmod(path, stat.S_IWRITE)
	func(path)
	
# 하위 디렉터리까지 통째로 지운다.
# [ref] https://docs.python.org/3.4/library/shutil.html#shutil.rmtree
def remove_dir_tree(remove_dir):
	try:
		shutil.rmtree(remove_dir, ignore_errors=False, onerror=remove_readonly)
	except(PermissionError) as e:  ## if failed, report it back to the user ##
		print("[Delete Error] %s - %s." % (e.filename,e.strerror))

remove_dir_tree("C:/Users/Heeseok/.m2/repository/classworlds")


remove_dir.py


Comments