차근차근/이것저것

[파이썬] 하위디렉토리 검색하기

예쁜꽃이피었으면 2014. 10. 22. 13:33

http://minhaep.tistory.com/86


하위디렉토리 검색하기

자신의 PC에서 특정 파일만을 찾아내어 특정 문장이 포함되어 있는 부분을 다른 문구로 수정하여 저장해야 한다고 생각해 봅시다.이와 비슷한 상황은 실제 업무에서 매우 빈번하게 발생하죠.

 

파이썬을 조금만 사용할 줄 알면 일일이 파일을 찾은 후에 파일을 열어서 수정한 후에 다시 저장하는 행위를 반복하는 번거러운 일은 하지 않겠죠? 그렇다면 예제 소스을 통해 재귀호출을 이용하여 특정 디렉토리부터 시작하여 그 하위의 디렉토리 파일등을 검색하기 시작하는 프로그램이 어떻게 만들어지는지 살펴봅시다.

 

 

import os

def search(dirname):
    flist = os.listdir(dirname)
    for f in flist:
        next = os.path.join(dirname, f)
        if os.path.isdir(next):
            search(next)
        else:
            doFileWork(next)


def doFileWork(filename):
    ext = os.path.splitext(filename)[-1]
    if ext == '.py': print filename


search("d:/")

 

 

 

 

위 소스는 재귀호출을 이용하여 특정 디렉토리부터 시작하여 그 하위의 디렉토리 파일등을 검색하기 시작하는 프로그램입니다.

 

만약 디렉토리일 경우에는 다시 search함수를 재귀로 호출하고 파일일 경우에는 doFileWork이라는 함수를 호출합니다.위의 예는 d드라이브 밑에 있는 파일 중 확장자가 .py인 파일을 모두 출력하는 예제입니다.

 

 

만약 .py라는 확장자를 가진 모든파일에서 "ABC"를 "DEF"로 바꾸려면 doFileWork를 아래처럼 구현하면 될 것이다.

def doFileWork(filename): ext = os.path.splitext(filename)[-1] if ext != ".py": return f = open(filename) before = f.read() f.close() after = before.replace("ABC", "DEF") f = open(filename, "w") f.write(after) f.close()


반응형