- 0
- 이니스프리
- 조회 수 1336
폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트입니다.
도메인 등 문자열을 일괄적으로 변경해야 하는 경우에 사용하려고 작성했습니다.
os.walk()를 이용하면 하위 디렉토리까지 간편하게 검사할 수 있고, fnmatch.filter()로 검색패턴을 정해줄 수 있더군요. ^^
import os, fnmatch def folderReplace(find_str, replace_str, filePattern): for path, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__))): for filename in fnmatch.filter(files, filePattern): if filename == 'file_replace.py': # 이 파일 자체는 변경하지 않도록 합니다. continue filepath = os.path.join(path, filename) with open(filepath) as f: s = f.read() if s.find(find_str) != -1: # 해당 문자열이 존재하는지 확인합니다. print(filepath) s = s.replace(find_str, replace_str) with open(filepath, 'w') as f: # 교체된 문자열로 덮어씁니다. f.write(s)
다음과 같은 형식으로 함수를 호출하시면 됩니다.
folderReplace('변경 전 문자열', '변경 후 문자열', '파일패턴')
파일패턴은 '*.확장자' 등 다양하게 사용할 수 있습니다.
https://studyforus.com/tipnknowhow/640995
이 글과 결합하면 replace 횟수까지 표시할 수 있겠네요 ^^
작성자
댓글 0
권한이 없습니다.