• 목록
  • 아래로
  • 위로

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

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 732
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4404
446 [Python] m3u8 파일의 목록에 있는 ts 파일들을 merge하는 방법 6 이니스프리 이니스프리 20.06.20.22:03 1345
445 [파이썬] 여러 개의 공백을 하나로 줄이는 방법 이니스프리 이니스프리 19.12.28.00:12 1320
444 빠르고 간단한 인터넷 속도 측정기 14 망할윈도우미 망할윈도우미 18.05.28.20:05 1307
443 [Python] 이차원 리스트에서의 다중조건 정렬 이니스프리 이니스프리 20.02.08.23:00 1299
442 [Python] wav, mp3 재생하기 이니스프리 이니스프리 20.03.15.13:43 1295
[파이썬] 폴더 및 하위 폴더 내의 파일에서 문자열을 일괄적으로 replace하는 스크립트 이니스프리 이니스프리 19.12.25.13:01 1240
440 그누보드 캡챠(KCaptcha)의 설정을 변경하는 방법 이니스프리 이니스프리 18.11.14.21:22 1240
439 GitHub에서 학생계정 얻고 Private Repo 사용하기 5 Seia Seia 18.06.23.22:34 1232
438 [파이썬] 명언 엑셀파일 to CSV 변환 스크립트 이니스프리 이니스프리 19.07.09.23:19 1221
437 [Python] Requests에서 SSLError 발생 시 대처 방법 이니스프리 이니스프리 21.09.19.15:12 1216
436 [Python] 엑셀 파일에 암호 설정 (Set password for Excel file using Python) 3 image 이니스프리 이니스프리 21.07.09.21:21 1196
435 [할인정보] 핫스팟쉴드 엘리트 VPN 평생 이용권 99.99달러 3 이니스프리 이니스프리 17.02.09.23:25 1185
434 [건강/의학] 허리디스크,목디스크 혹은 허리,목아프신분들을 위한 팁. 2 image death death 17.01.25.21:25 1178
433 masonry 라이브러리 사용시 세로방향 이미지 겹침 문제에 대한 해결방법 이니스프리 이니스프리 19.07.20.23:39 1166
432 레노버 랩탑에서 Fn 키 설정 및 Ctrl 키와의 상호전환에 대하여 이니스프리 이니스프리 20.01.02.22:22 1104
431 Programmers에서 비메오 오류로 강의가 재생되지 않을 때 해결방법 이니스프리 이니스프리 19.12.10.19:22 1095
430 미국 내 주별 세일즈 택스에 대한 정리 (펌) 이니스프리 이니스프리 18.12.09.10:43 1090
429 [Python] 영어로 표기된 날짜를 숫자로 변환 이니스프리 이니스프리 21.05.30.11:39 1072
428 더현대닷컴 vs Hmall의 차이 이니스프리 이니스프리 20.01.26.20:10 1072
427 [Python] 2개의 리스트를 딕셔너리로 변환하는 3가지 방법 이니스프리 이니스프리 20.10.25.15:34 1056