[파이썬] 파일명 일괄변경 / 여러 파일의 이름을 한번에 변경 - glob

2020. 9. 12. 02:27응용

728x90

 

 

 

 

 os 모듈과 glob 모듈을 사용해서 폴더 안에 있는 파일명을 일괄로 변경.

 

 glob(pathname) 함수는 결괏값으로 파일 경로의 리스트를 반환한다.

 pathname에 와일드카드 문자(wildcard character)를 사용할 수도 있다.

 

 

 다음은 파일명 앞에 문자열을 추가하는 예이다.

path = "./임시폴더"
files = glob.glob(path + '/*')

for f in files:
    new_f = os.path.join(path, 'img_' + os.path.basename(f))  # 문자 추가
    os.rename(f, new_f)
    print('{} ==> {}'.format(f, new_f))    

 

 

이 부분이 추가된 파일명이다.

new_f = os.path.join(path, 'img_' + os.path.basename(f))  # 문자 추가

삭제하고 싶다면, 

 new_f = f.replace('img_', '')   # 문자 삭제

 

파일 내 글자를 변경하고 싶다면,  

new_f = f.replace('all', 'best')   # 문자 변경

 

 

만약, 파일명 뒤에 숫자를 추가하고 싶다면, 

path = "./임시폴더"
files = glob.glob(path + '/*')

for i, f in enumerate(files):  
    fname, fext = os.path.splitext(f)  
    new_f = fname + '_' + '{0:03d}'.format(i+1) + fext    # 숫자 추가
    os.rename(f, new_f)
    print('{} ==> {}'.format(f, new_f))    

 

이 부분이 파일명에 추가된 숫자이다.

new_f = fname + '_' + '{0:03d}'.format(i+1) + fext    # 숫자 추가

숫자 0 값을 없애려면, 

new_f = f.replace( '_' +'{0:03d}'.format(i+1), '_' +'{0:d}'.format(i+1))

 

폴더 안에 있는 모든 파일들의 이름을 변경하기 때문에, 변경하려는 파일들은 '임시폴더'로 복사하여 사용.

 

 

 

▶ 다음은 'img_'라는 문자를 추가한 결과이다.

 

cf)  경로명도 변경대상에 들어가므로, 변경할 글자가 경로명에 있으면 안 됨.

 

 

 

 

 

 

 

반응형