본문 바로가기
업무자동화

파이썬으로 폴더이름 쉽게 바꾸기[1/?]

by Martinii의 회사원코딩 2021. 7. 21.

파이썬의 내장모듈인 os를 이용하면 간단한 대량폴더 이름바꾸기나 생성작업 등을 할 수 있습니다.

개인적으로 이런 작업을 워낙 많이 하다 보니 이젠 어느 정도 패턴도 만들어지고 루틴화돼서 아주 신속하게 작업할 수 있게 되었습니다. 그 노하우를 몇 개 공유하려고 합니다.

 

수정 전후의 폴더상태(예시)

아래는 첫 번째 예입니다. 수정 전후 폴더상태(좌측의 트리)를 유심히 봐주시기 바랍니다.

수정 전 폴더상태(사업별로 여비지출결재서 분류)
수정 후 폴더상태(사업별 구분 없이 폴더명에 사업명을 써넣음)

계층이 불필요하게 깊어지고 복잡해지는 걸 막기 위해 사업명을 폴더에 포함시키고, 한 폴더 안에서 관리하려고 합니다.

코딩이나 셸 사용법을 모른다면 단순무식하지만 오래걸리는 폴더정리 작업입니다.

경우에 따라서는 "날잡아서 처리해야 하는 작업"이 될 수도 있어요.

하지~만! 

파이썬과 os모듈 사용법을 아주 조금만 익히면,

폴더 개수에 상관없이 1분도 걸리지 않고 위 유형의 작업을 처리할 수 있습니다.

 

처리방법을 보여드리겠습니다.

여러분의 PC에
- 파이썬과 ipython 모듈이 설치되어 있고,
- 파이썬 폴더가 환경변수에 등록되어 있다고 가정하겠습니다.

1. 윈도우탐색기에서 Ctrl-L을 눌러 주소창으로 캐럿을 옮긴다.

Ctrl-L을 누르면 주소창으로 포커스가 이동됨

2. 그 상태에서 "ipython"을 입력하고 엔터를 쳐서 파이썬 콘솔을 연다.

윈도우탐색기에서 ipython 직접 열기

위 방법의 장점은, 이미 콘솔의 경로가 탐색기와 동일하다는 것입니다.

(번거롭게 os.chdir로 경로를 이동할 필요가 없다는 뜻이죠.)

이제 본격적인 수정 작업을 해보겠습니다.

3. 아래의 코드 세 줄을 입력한다.

import os  # os모듈 임포트
for i in os.listdir():  # 현재경로의 [모든 파일/하위폴더 이름]을 순회하면서
    os.rename(i, i.replace("#", "#굴착사업#"))  # "여비지출결재서#0주차"를 "여비지출결재서#굴착사업#0주차"로 변경

실행화면은 아래와 같습니다.

폴더 이름이 순식간에 일괄변경됨

4. 코드 부연설명

os.listdir()

현재 경로의 파일과 폴더이름 전부를 문자열의 리스트로 리턴하는 메서드입니다.

괄호 안에 특정 경로를 넣으면, 해당 경로 내의 파일과 폴더리스트를 리턴합니다.

참고로 listdir()에서 리턴한 리스트의 원소들은 문자열(str)이므로, 폴더명과 파일명을 구분할 수 없습니다.

구분하는 방법은, os.path.isdir(문자열) 또는 os.path.isfile(문자열) 메서드를 사용하면 됩니다.

각각 True 또는 False를 리턴합니다.

os.listdir() 사용법

os.rename(전, 후)

파일이름이나 폴더이름을 변경할 때 사용하는 메서드입니다.

대량의 파일명이나 폴더명을 일괄로 변경하는 경우, os.listdir()과 같이 자주 사용하며,

주로 문자열 메서드인 replace나 split 을 같이 이용하기도 합니다.

이 부분은 다른 예제에서 조금 더 자세히 다루겠습니다.

아래 영상은 " - 복사본 " 문자열을 폴더 리스트에서 일괄 제거하는 작업입니다.

폴더목록에서 " - 복사본 " 문자열 일괄제거

str.replace(전, 후)

문자열 내의 특정 글자나 단어를 원하는대로 수정할 수 있습니다. 또한 특정 횟수까지만 변경하고 싶은 경우

str.replace(전, 후, 횟수) 방식으로 실행하시면 됩니다.

유의할 점은, replace 메서드를 실행한다고 원본이 바뀌지는 않습니다. 다시 정의를 해줘야 합니다.

아래 영상은 공백(스페이스)을 언더바로 바꾸는 예제입니다. i의 값이 언제 바뀌는지 유심히 보시기 바랍니다.

i = i.replace()로 재정의해야만 i의 값이 바뀜

5. 마치며

파이썬에서 문자열을 다루는 방식은 정말 간단하고, 사용자 친화적입니다.

파이썬의 가장 큰 장점 중 하나입니다.

특히 리스트컴프리헨션과 문자열 인덱싱, f스트링 및 re 등 강력하고 다양한 도구는

다른 어떤 언어보다 문자열 처리를 효과적으로 처리할 수 있도록 돕습니다.

흠, 폴더이름 변경에서 시작해서 너무 거창하게 마무리하는 것 같네요;

하여튼 이렇게 쉽고 빠르게 작업할 수 있다는 점을 보여드리고 싶었습니다.

이번 포스팅은 여기서 마치겠습니다.

 

행복한 하루 되세요^^

 

 

 


donaricano-btn

'업무자동화' 카테고리의 다른 글

파이썬으로 폴더이름 쉽게 바꾸기[1/?]  (0) 2021.07.21

댓글0