-
Python/날짜와 시간으로 사진 이름 변경 - 2. 임시 이름 변경코딩/Python 2024. 1. 18. 17:13728x90
매개변수
- path (str): 파일이 존재하는 디렉토리의 경로.
- files (list[str]): 파일 이름들을 담고 있는 리스트.
- csv_name (str): CSV 파일의 이름. 변경된 파일 목록 및 각 파일의 원래 경로와 임시 경로를 저장.
- prefix_tmp (str): 임시 파일 이름의 접두어.
설명
특정 디렉토리에서 파일 이름을 임시로 변경하고, 변경된 파일 목록을 CSV 파일에 저장하는 기능을 수행.
- 파일 수에 따른 자릿수 지정:
- file_count = len(files): 주어진 디렉토리에서 가져온 파일의 수를 계산.
- zfill_number = len(str(file_count)): 파일 수에 따라 필요한 자릿수를 계산.
- 파일 이름 임시로 변경:
- tmp_files와 csv_rows 리스트 초기화 후 각 파일에 대해 루프를 돌면서 다음 작업을 수행:
- for file in files: 를 쓰지 않고 enumerate()를 사용한 이유는 index i 를 파일명으로 사용하기 위해서다.
- 파일의 이름이 이미 임시 파일 접두어(prefix_tmp)로 시작하는지 확인하고, 이미 임시 파일이라면 오류 메시지를 출력하고 프로그램을 종료.
- 파일의 확장자를 추출하고 현재 파일의 경로를 생성.
- 새로운 임시 파일 이름을 생성하고, 새로운 임시 파일의 경로를 생성.
- 임시 파일의 이름과 경로를 tmp_files 리스트에 추가.
- 현재 파일의 경로와 임시 파일의 경로를 각각 CSV 행으로 만들어 csv_rows 리스트에 추가.
- os.rename()을 사용하여 현재 파일의 이름을 임시 파일의 이름으로 변경.
- tmp_files와 csv_rows 리스트 초기화 후 각 파일에 대해 루프를 돌면서 다음 작업을 수행:
- CSV 파일에 변경 내용 저장:
- 모든 파일의 이름이 변경된 후, 변경된 파일 목록과 원래 파일의 경로, 임시 파일의 경로를 갖는 CSV 행들을 CSV 파일에 저장.
- CSV 파일은 추후 실수가 있었을 경우 파일 이름을 원래로 되돌리려는 목적으로 저장.
- 임시로 변경된 파일 목록 반환:
- 변경된 파일 목록을 담고 있는 tmp_files 리스트를 반환.
728x90def rename_tmp(path: str, files: list[str], csv_name: str, prefix_tmp: str) \ -> list[str]: ''' 파일 이름 임시 변경 ''' # 파일 수에 맞게 자릿수 지정 file_count = len(files) zfill_number = len(str(file_count)) ### 파일의 이름을 임시로 변경 tmp_files = [] csv_rows = [] for i, file in enumerate(files): # tmp already check if file.startswith(prefix_tmp): print('Error. TMP files') exit() _, extension = os.path.splitext(file) file_path = os.path.join(path, file) tmp_file = prefix_tmp + str(i).zfill(zfill_number) + extension tmp_file_path = os.path.join(path, tmp_file) tmp_files.append(tmp_file) row = [file_path, tmp_file_path] csv_rows.append(row) os.rename(file_path, tmp_file_path) # 이름 변경 내용 csv 저장 file_path_csv = os.path.join(path, csv_name) with open(file_path_csv, 'w', newline='', encoding='utf-8-sig') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerows(csv_rows) return tmp_files
728x90'코딩 > Python' 카테고리의 다른 글
Python/파일을 다루는 두 가지 방식, with... 와 f=open() (0) 2024.01.18 Python/날짜와 시간으로 사진 이름 변경 - 3. Exif tag 추출, 파일 생성 시간, Exif tag 종류 (0) 2024.01.18 Python/날짜와 시간으로 사진 이름 변경 - 1. 파일 목록 가져오기 (0) 2024.01.18 Pythone/concat()을 사용하여 Pandas DataFrame을 합치기 (0) 2023.12.20 Python/Type hint 사용법 (0) 2023.12.20