(또 다른) 간단한 Python 파일 이름 바꾸기 스크립트

소개



이것은 사용자가 이름을 바꿀 파일 유형을 지정하고 명명 규칙을 선택할 수 있도록 하는 파일 이름 바꾸기 스크립트에 대한 연습입니다.

스크립트




import pathlib

# set the directory containing the files to be renamed
path = pathlib.Path("/home/joe/Pictures/examplePics/")

# set the new name of the files 
file_name = "photos"
file_list = []
counter = 1

for file in sorted(path.glob("*.JPG")): # file type to rename
    file_list.append(file)
for file in file_list:
    new_file = file_name + str(counter) + str(file.suffix).lower()
    file.rename(path / new_file)
    counter += 1


작동 방식



이 디렉토리에는 .jpg.txt 의 두 가지 파일 유형이 있습니다. 이 예에서는 .jpg 파일의 이름만 변경하려고 합니다.



먼저 스크립트는 표준 라이브러리에서 pathlib 모듈을 가져옵니다. 이 모듈의 함수를 사용하면 스크립트가 디렉토리를 탐색하고 파일 유형별로 반복하며 파일 이름을 바꿀 수 있습니다. .Path() 클래스는 이름을 바꿔야 하는 파일의 위치를 ​​스크립트에 알려줍니다. path 변수에 할당됩니다.

import pathlib

path = pathlib.Path("/home/joe/Pictures/examplePics/")


이름이 바뀌는 파일과 동일한 디렉토리에서 스크립트를 실행하면 path가 작성될 수 있습니다.

path = pathlib.Path().cwd()


다음으로 사용자는 새 파일 이름의 줄기가 될 문자열을 file_name에 할당합니다. file_list 빈 목록을 초기화합니다. counter는 파일 번호 지정 체계를 1부터 시작합니다.

file_name = "photo"
file_list = []
counter = 1


첫 번째 'for 루프'는 path가 가리키는 파일을 반복합니다. .glob() 메서드는 상대 패턴(역시 사용자가 할당)을 일치시켜 파일 형식을 지정합니다. 파일이 정렬되어 위에서 초기화된 file_list에 추가됩니다.

for file in sorted(path.glob("*.JPG")): # file type to rename
    file_list.append(file)


이 첫 번째 'for 루프'가 없으면 이름 바꾸기 스크립트가 일부 파일을 덮어쓰고 지우는 비주류 사례가 있습니다. file_name 문자열을 변경하지 않고 연속으로 두 번 실행하면 이런 일이 발생합니다. 작업 디렉터리 외부에서 스크립트를 실행할 때 Linux(WSL 및 Linux 시스템 모두)에서만 이 문제가 발생했습니다. Windows에서 문제를 복제하도록 할 수 없습니다.

사용자가 이 파일 삭제 문제를 겪을 가능성은 그리 높지 않은 것 같습니다. 그러나 예기치 않게 파일이 손실되는 것을 좋아하는 사람은 아무도 없기 때문에 안전을 위해 스크립트에 보관했습니다.

두 번째 'for 루프'는 file_list 에 추가된 정렬된 파일을 반복합니다. new_file가 초기화되고 새 파일 이름이 file_name의 문자열, counter의 정수(문자열로 변환됨) 및 첫 번째 'for 루프'에 지정된 파일 유형 접미사에서 연결됩니다. file.suffix는 문자열로 변환되고 .lower() 문자열 메서드를 사용하여 소문자로 변환됩니다.*

for file in file_list:
    new_file = file_name + str(counter) + str(file.suffix).lower()


*저는 파일 확장자를 소문자로 하는 것을 좋아하기 때문에 파일 접미사를 변환했습니다. 대문자 확장자가 선호되거나 확장자가 이미 소문자인 경우 다음과 같이 줄을 작성할 수 있습니다.

    new_file = file_name + str(counter) + file.suffix


마지막으로 .rename() 메서드는 파일의 이름을 대상 디렉토리 경로로 바꾸고 대상을 가리키는 새 Path 인스턴스를 반환합니다.counter가 1씩 증가하고 지정된 모든 파일의 이름이 바뀔 때까지 스크립트가 반복됩니다.

    file.rename(path / new_file)
    counter += 1


스크립트가 실행된 후 디렉토리는 다음과 같습니다.



읽어 주셔서 감사합니다!

좋은 웹페이지 즐겨찾기