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()
반응형
'차근차근 > 이것저것' 카테고리의 다른 글
Word 2007 파일을 PDF 형식으로 변환하는 방법 (0) | 2014.11.28 |
---|---|
C/C++ 소스코드를 공개하는 Site 모음 (0) | 2014.10.23 |
서버 연결 안됨 + 리눅스 Bash 취약점 패치 방법 (0) | 2014.10.14 |
서버 관리 책 추천 (0) | 2014.10.14 |
참고사이트 - 자바 (0) | 2014.09.17 |