• 목록
  • 아래로
  • 위로

폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 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 횟수까지 표시할 수 있겠네요 ^^



작성자
이니스프리 119 Lv. (1%) 2780150/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 13 마스터 마스터 24.06.20.15:22 804
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 2739
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 6458
316 [생활정보] 60초만에 잠드는 호흡법 (기사 및 관련 보도 포함) 6 image 이니스프리 이니스프리 17.02.12.21:54 310
315 [컴퓨터/웹] 키보드 보안 프로그램 전체삭제 프로그램. 1 death death 17.01.26.21:48 310
314 멘션 설정을 해주세요. 1 image 에듀 title: 맛스타의 자물쇠에듀 16.12.01.20:47 310
313 레오폴드 FC980C 30g 균등 모델 출시 image 이니스프리 이니스프리 19.04.13.23:51 311
312 [이벤트정보] V3 모바일 시큐리티 설치 후 개인정보 클리너 실행시 오로나민 쿠폰 image 이니스프리 이니스프리 17.01.16.11:23 311
311 [신제품정보] 크리스피크림 신메뉴 출시! 이니스프리 이니스프리 17.02.02.23:35 312
310 JavaScript와 Canvas로 이미지의 배경값을 자동으로 산출하기 Seia Seia 20.09.12.06:37 312
309 파일질라 최신버전에서 윈도우 비스타를 지원 종료했네요 1 title: 은메달도다 17.05.27.15:45 313
308 윈도우 탐색기의 새로 고침 기능 자동화하기 (2) 이니스프리 이니스프리 18.12.25.08:54 313
307 [생활정보] 교보문고 매월 22일~28일, e캐시 더블적립 3 image 이니스프리 이니스프리 17.01.23.23:47 315
306 [Python] 쿠팡 크롤링할 때 소소한 팁 이니스프리 이니스프리 24.05.02.21:50 315
305 [강의/강좌] 비판적인 사고를 할 수 있게 해주는 5가지 원칙 image death death 17.01.27.09:22 316
304 [할인정보] 비트디펜더 50% 할인 이벤트 이니스프리 이니스프리 17.02.05.22:35 316
303 생활 속 전기 절약하기 3 image 맛수타 17.06.06.13:55 317
302 [Python] \u3000을 공백으로 치환하기 이니스프리 이니스프리 23.10.29.14:51 317
301 그누보드(아미나) 게시판의 첨부파일을 크롤링할 때 세션 관련 유의할 점 1 이니스프리 이니스프리 19.11.18.23:00 318
300 해외 VPS를 게이트웨이/프록시 서버로 사용하여 국내 100회선의 서버 속도를 높여보자 5 Seia Seia 18.12.04.22:52 318
299 [정규식] 문자열에 괄호 넣기 이니스프리 이니스프리 20.07.01.18:37 318
298 [이벤트정보] 스킨큐어 신년음악회 개최, 30명에게 티켓 쏜다 1 image 이니스프리 이니스프리 17.01.01.13:00 320
297 [할인정보] 노턴, 맥아피 안티바이러스 할인 2 image 이니스프리 이니스프리 17.01.01.13:45 320