본문 바로가기

코딩/파이썬

파이썬 - 파일 확장자 한번에 변경하기

반응형

안녕하세요.

오늘은 파이썬으로 여러 파일의 확장자를 한번에 변경해보도록 하겠습니다.

 

우선 저의 경우는 아래 사진과 같이 JFIF확장자의 파일을 다운받았는데,

머신러닝에 사용하기 위해 로보플로우에서 전처리를 하기 위해서는

JPG확장자로 변경해줘야 했기 때문에 파이썬 코드로 변경을 시도했습니다.

1. 전체 코드

전체 코드는 아래와 같습니다.

import sys
from os import rename, listdir

PATH = '파일이 들어있는 폴더의 경로'

filelist = listdir(PATH)

for name in filelist:
    if name.find('.') < 0:
        continue
    replaced = name.replace("jfif","jpg")
    rename(PATH+'\\'+name, PATH+'\\'+replaced)
    print(name,' -> ',replaced)

print('변환 완료')

 

2. 코드 분석

우선은 sys 라이브러리와 os 라이브러리를 사용합니다.

os 라이브러리는 전체를 사용하지 않고, rename과 listdir만 사용합니다.

import sys
from os import rename, listdir

이제 변경할 파일이 들어있는 폴더의 경로를 PATH라는 변수에 담아줍니다.

PATH = '파일이 들어있는 폴더의 경로'

다음으로는 경로에 있는 파일의 목록을 읽은 후 filelist라는 변수에 담아줍니다.

filelist = listdir(PATH)

이제 진짜 확장자 변경을 진행합니다.

#for문을 활용해 filelist 변수에 들어있는 파일을 하나씩 가져옵니다.
for name in filelist:
	#만약 확장자가 없는 파일이 있다면 변환을 하지 않고 넘어갑니다.
    if name.find('.') < 0:
        continue
    #가져온 파일명에서 jfif확장자를 jpg로 바꾸어주었습니다.
    replaced = name.replace("jfif","jpg")
    #rename 함수를 이용해 파일명을 변경합니다.
    rename(PATH+'\\'+name, PATH+'\\'+replaced)
    #진행과정을 출력합니다.
    print(name,' -> ',replaced)

작업이 완료되면 메시지를 출력합니다.

print('변환 완료')

 

3. 결과 확인

정상적으로 코드를 실행하면 아래와 같이 터미널에 결과가 표시됩니다.

파일 변환도 성공적으로 완료되었음을 확인할 수 있습니다.

 

*만약 아래와 같은 오류가 발생한다면?SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

 

아래 링크에 있는 해결방법을 참고하면 아주 손쉽게 해결할 수 있다.

2022.03.31 - [코딩/오류 모음집] - 파이썬 SyntaxError: (unicode error) 'unicodescape' 오류 해결

 

파이썬 SyntaxError: (unicode error) 'unicodescape' 오류 해결

파이썬 코딩할때 파일 경로를 지정하는 경우가 생기는데, 그때 혹시 이런 에러를 마주하게 된다면? SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXX..

bebutae.tistory.com

반응형