'os.walk'에 해당되는 글 1건

  1. 2012.02.23 [Python] 특정 폴더들을 찾아 삭제하기

[Python] 특정 폴더들을 찾아 삭제하기


배경:
현재 주요 프로젝트 환경의 구성에 있어서 개발 서버에는 SVN을 두고, 로컬은 Mac OS X에서 git으로 소스코드를 관리하고 있다. 다만, 웹 디자이너와의 협업은 FTP를 통해 이루어지는데, 이번에 여러 사정으로 .svn 파일들이 로컬 작업 공간에 모두 복사되었다. 
수 많은 폴더들을 하나씩 열어가며 삭제하는 것은 정신나간 짓이기에 재귀적으로 .svn 폴더를 찾아 삭제하는 스크립트를 짜기로 했다. Mac OS는 유닉스 계열 커널이므로 굳이 Python을 사용하지 않고 쉘스크립트를 이용해도 되지만, 본인은 쉡스크립트 프로그래밍을 현재 모르는 상태이기에 Python을 이용하였다.

환경:
Mac OS X Lion
Python 2.6

해법:
현재 디렉토리를 기준으로 재귀적으로 .svn 폴더를 찾아 모두 삭제한다.

코드:

import os


def remove_all(root):

for base, dirs, files in os.walk(root, topdown=True):

for name in files:

next = os.path.join(base, name)

print 'F: ' + next

os.remove(next)

for name in dirs:

next = os.path.join(base, name)

print 'D: ' + next

remove_all(next)

os.rmdir(next)


def remove_svn(root):

for base, dirs, files in os.walk(root, topdown=True):

for name in dirs:

next = os.path.join(base, name)

if name == '.svn':

print 'D: ' + next

remove_all(next)

os.rmdir(next)

else:

remove_svn(next)


remove_svn(os.path.abspath(os.path.dirname(__file__)))

 
위 코드를 remove_svn.py라는 파일로 저장하여 커맨드라인에서 동작시켰으며, 문제없이 잘 동작하였다.