본문 바로가기
Python/점프 투 파이썬

[05] 하위디렉토리 검색

by 가므자 2012. 4. 23.

자신의 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()

 

출처 : wikidocs 점프 투 파이썬

'Python > 점프 투 파이썬' 카테고리의 다른 글

[06] 얼마나 시간이 경과됐을까?  (0) 2012.04.23
리스트  (0) 2012.04.23
[04] 12345라는 숫자를 12,345처럼 바꾸기  (0) 2012.04.23
[03] tab을 4개의 space로 바꾸기  (0) 2012.04.20
[02] 간단한 메모장  (0) 2012.04.20

댓글