• 목록
  • 아래로
  • 위로

폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 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. (0%) 1950580/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 931
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4606
349 2019년 공휴일 미리보기(?) 2 image 이니스프리 이니스프리 19.01.05.11:46 249
348 유튜브 iframe api의 autoplay 옵션과 관련하여 1 image 이니스프리 이니스프리 19.01.05.14:45 7530
347 체온계/의료기기의 통관과 관련된 사항입니다 1 이니스프리 이니스프리 19.01.17.01:52 1552
346 변압기 소음을 줄이는 방법 6 이니스프리 이니스프리 19.01.27.12:27 2158
345 토크멘터리 전쟁사를 유튜브에 업로드 되기 전에 시청하는 방법 이니스프리 이니스프리 19.01.27.12:40 270
344 [Vultr] 2/1 service alert 이니스프리 이니스프리 19.01.31.12:12 129
343 [아미나] 한별아빠 님의 미소 심플 1.0 테마 출시, 미소 컴퍼니 2.2 테마 업그레이드, jake 님의 PORTFOLIO 테마 출시 5 이니스프리 이니스프리 19.02.01.00:46 216
342 [강좌 추천] 파이썬을 파이썬답게 7 이니스프리 이니스프리 19.02.01.12:20 214
341 [스퀘어넷] Ubuntu Server 18.04 LTS 지원 1 이니스프리 이니스프리 19.02.04.22:20 166
340 [학습정보] 구글 게이밍 아카데미 2/18 9 image 이니스프리 이니스프리 19.02.05.16:38 188
339 [아미나] 미소 컴퍼니 / 미소 심플 테마와 관련된 정보 1 이니스프리 이니스프리 19.02.05.16:51 179
338 직구시 건강보조식품의 통관과 관련하여 1 이니스프리 이니스프리 19.02.05.23:33 556
337 Linux에서 Screen 패키지를 사용하는 방법과 그 이유 6 image Seia Seia 19.02.20.03:28 360
336 [아미나] 아미나 2.0으로의 리뉴얼 계획 이니스프리 이니스프리 19.03.12.13:03 173
335 Asus MB169AC를 USB Type-C 아닌 포트에서 사용하는 방법 이니스프리 이니스프리 19.03.16.06:45 261
334 ASUS DisplayWidget 실행시 메인모니터의 디스플레이 설정이 초기화 되는 것과 관련하여 1 이니스프리 이니스프리 19.03.21.21:18 240
333 cPanel의 Full backup의 옵션 1 image 이니스프리 이니스프리 19.03.22.22:36 175
332 크롬 버전 73에서 bxSlider 관련 문제에 대한 해결책 이니스프리 이니스프리 19.03.26.19:25 492
331 특정 사이트 접속이 느려질 때 해결방법 (Browser Helper Objects 관련) 3 이니스프리 이니스프리 19.03.28.13:17 647
330 [관세청] 해외 직구 통관 길라잡이 (PDF 파일 다운로드 링크) 이니스프리 이니스프리 19.03.31.10:01 243