Utils

폴더 안에 파일들 이름 정리하기 (Python3)

jinmc 2022. 3. 29. 18:11
반응형

https://walkaroundthedevelop.tistory.com/99?category=897569 

 

폴더 안에 파일명을 정리하고 싶어서, 스크립트를 짜보려고 하다가, 

문득 제 블로그 중에서 비슷한 일을 했던 것을 발견하고, 거기서 조금만 추가해서 스크립트를 다시 만들어 보려고 합니다.

 

예상 시나리오는 다음과 같습니다. (실제 예)

폴더 안에 동영상 파일들이 많은데, 그 동영상 파일들의 제목들이 너무 길어서 정리가 잘 안되서,

날짜와 폴더이름, 순서로 정리를 하고자 싶을 때, 스크립트를 사용해서 간단하게 정리 하는 스크립트를 만들었습니다.

 

import os

def main():
    # directory 선택하기
    ldir = os.listdir()
    ldir.remove("change_file_names.py") # remove this script
    print("directories in current directory: ", ldir)
    print("Select dir to change : ")
    iput1 = input()

    # prefix 있으면 넣어봅시다 없으면 엔터
    print("if you want to enter prefix, input. If not, press enter.")
    iput2 = input()
    print(f"prefix is {iput2}")
    prefix = ""
    if len(iput2.strip()) > 0:
        prefix += iput2 + "_"

    # 선택된 directory 살펴보기
    ldir2 = os.listdir(iput1)
    print("files in selected directory: ", ldir2)
    print(f"total of {len(ldir2)} files")

    # os.rename 을 사용한 파일이름 변경
    for count, filename in enumerate(ldir2):
        filename.split(".")[-1]
        dst = prefix + iput1 + "_" + str(count) + "." + filename.split(".")[-1]
        src = f"{iput1}/{filename}"
        dst = f"{iput1}/{dst}"

        print(f"rename src {src} to dst {dst}")
        os.rename(src, dst) # 실제 파일이름 변경



if __name__ == '__main__':
    main()

 

여기서 ldir2 을 sorting하는 코드를 한 줄 넣어주는 것도 좋습니다.

저는 기존의 파일명에 기준하여서 sorting을 진행하였습니다.

 

idir2.sort(key=lambda x: x.split(".")[-2].split("_")[-1])
반응형