본문 바로가기
작업/Programming

파이썬(Python) 폴더 및 파일 이름 바꾸기

 

 

 

파일의 양이 많아지고, 한 번의 처리를 필요로 할 때

파이썬에서는 파일의 목록을 가져오고 처리할 수 있는 모듈과 함수를 제공합니다.

 

이번 글은 파일 목록과 관련된 내용이며

의도하는 폴더의 파일 목록을 확인하고, 파일명을 바꾸는 일괄 처리를 해보겠습니다.

 

-- -- -- -- -- -- -- --

 

파이썬에서는 의도하는 폴더의 내용(파일 목록)을 확인할 수 있도록

glob.glob()os.listdir() 함수를 사용합니다.

 

 

glob, os 모듈을 import하여 사용할 수 있으며

glob.glob()는 폴더 경로를 포함한 절대 경로를 반환합니다.

os.listdir()은 해당 경로의 파일 이름만 반환합니다.

 

 

직접 확인해보겠습니다.

먼저, 예시로 사용해 볼 폴더와 파일은 아래 그림과 같습니다.

 

예시 폴더와 파일

 

 

※ 폴더나 파일의 경로를 적용할 때 BackSlash(, \)기호를 사용하게 됩니다.

한국어 글꼴이 적용된 입력에서는 원화() 표시, 

이 외의 글꼴에서는 백 슬래시(\)로 표시됩니다.

 

시스템 처리에 따라서 BackSlash가 다르게 처리될 수 있습니다.

실행 결과가 올바르지 않거나 오류가 발생했을 경우에는

백 슬래시를 2번 입력해서 시도해 보시길 바랍니다.

 

 

적용 예시

E:\자료\이미지\블로깅\Python\파일명바꾸기

E:자료이미지블로깅Python파일명바꾸기

 

 

 

1. glob.glob(pathname, * , recursive=False)

 

 

파이썬 문서에서는 인자 값이 3가지가 들어갈 수 있는 구조로 설명되어 있습니다.

pathname을 주로 사용하며 파일 경로에 해당합니다.

 

Unix 파일에 접근하는 것처럼 와일드카드(*, ? 등)도 사용 가능합니다.

 

변수 path에 예시 폴더의 경로를 문자열로 저장해서 진행하겠습니다.

 

 

폴더 내의 모든 파일 목록 추출

 

 

 

glob.glob() 함수의 인자로 path + '\*'가 들어갔습니다.

 

path는 폴더 경로까지만 적혀있기 때문에 추가로 파일 목록을 보기 위해 추가한 것입니다.

물론, path에 한 번에 저장해서 사용해도 됩니다.

 

와일드카드 *(Asterisk)는 "모든"이라는 의미가 있습니다.

그래서 *의 결과로 폴더의 모든 파일들이 추출된 것을 확인할 수 있습니다.

 

 

다른 경우를 보겠습니다.

 

폴더 내의 png 파일 목록만 추출

 

 

 

*.png처럼 모든 png 파일만 추출할 수도 있습니다.

코드의 결과로 폴더 내에 있는 png 파일만 추출된 것을 확인할 수 있습니다.

 

 

 

 

2. os.listdir(path='.')

 

 

os 모듈의 listdir() 함수는 인자로 1개만 받으며 이는 폴더 경로에 해당합니다.

기본 값은 '.'이며 이는 현재 Python 코드를 실행한 경로와 같은 경로에 있는 것에 해당합니다.

 

 

os.listdir() 함수로 폴더 내의 파일 추출

 

 

 

os.listdir() 함수의 인자로 폴더 경로인 path를 집어넣어서 결과를 확인했습니다.

 

그 결과, 폴더에 있는 모든 파일들이 "이름.파일구조" 형식의 리스트로 추출된 것을 확인할 수 있습니다.

 

 

여기서 glob.glob()와 다른 것을 알 수 있습니다.

glob.glob()는 결과로 모든 경로를 포함한 정보를 추출합니다.

os.listdir()은 경로를 포함하지 않은 정보만 추출합니다.

 

 

 

 

 

3. os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

 

 

마지막으로, 추출한 파일들의 이름을 바꿔보겠습니다.

 

이름을 바꾸는 함수는 os 모듈의 rename()입니다.

 

인자로 쓸 수 있는 옵션이 많이 있지만, 바꿀 대상인 src와

바꿀 이름인 dst 인자만 보도록 하겠습니다.

 

src에는 바꾸려는 파일을 지정하면 됩니다.

dst에는 바꾸고자 하는 파일 이름으로 지정하면 됩니다.

 

 

 

Python 프로그램이 작업 폴더와 같은 곳에 있지 않다는 가정으로

"절대 경로"를 사용한 파일명 변경을 진행했습니다.

 

 

절대 경로는 glob.glob()의 결과로 받아올 수 있었습니다.

src가 절대경로 형식으로 되었기 때문에

바꾸고자 하는 파일 이름도 src와 동일한 구조가 되어야 합니다.

 

따라서 dst도 src와 같은 절대경로 형태의 문자열 구조로 만듭니다.

 

폴더 내의 png 파일 이름 변경

 

이름이 바뀐 png 파일

 

 

 

코드가 정상적으로 실행되면 다음과 같이 png 파일의 이름이 변경된 것을 확인할 수 있습니다.

 

 

해당 내용을 바탕으로 여러 응용 작업들을 수행할 수 있을 것입니다.

읽어주셔서 감사합니다 :)

 

 

-끝-