-
Python/날짜와 시간으로 사진 이름 변경 - 3. Exif tag 추출, 파일 생성 시간, Exif tag 종류코딩/Python 2024. 1. 18. 17:36728x90
파일들의 이름을 Exif 태그 또는 생성 시간을 기반으로 재지정하고, 각 파일에 대해 새로운 고유한 이름을 생성하여 변경하는 함수.
- rename_to_time 함수:
- path (str): 파일이 존재하는 디렉토리의 경로.
- files (list[str]): 파일 이름들을 담고 있는 리스트.
- tag_time (str): Exif 태그 중에서 사용할 시간 정보.
- exif_time_format (str): Exif 태그에서 가져온 시간 정보의 형식.
- file_name_format (str): 새로운 파일 이름을 생성할 때 사용할 형식.
- time_delta (float): 파일들 간의 시간 간격. 파일명이 중복될 경우 시간차이를 둬 파일이름을 변경하기 위한 변수
- 파일 루프:
- files 리스트에 있는 각 파일에 대한 루프를 실행.
- os.path.splitext(file)를 사용하여 파일의 확장자를 추출하고, 파일의 전체 경로를 생성.
- Exif 태그에서 시간 정보 가져오기:
- try 블록 내에서는 Exif 태그에서 시간 정보를 가져오려 시도.
- with 문을 사용하여 파일을 열고 exifread 모듈을 사용하여 Exif 태그를 읽어온다.
- Exif 태그 중에서 tag_time에 해당하는 값을 time_str에 저장하고, 이를 exif_time_format 형식으로 파싱하여 time에 저장.
- 이 중, tags[tag_time]은 불안정해서 tag data를 그대로 넘기는 경우 에러가 난다. 그래서 str(tags[tag_time])으로 수정.
- 실패하면 (except 블록으로 이동하면), 파일의 생성 시간(생성 시간이 없으면 수정 시간)을 가져와 time에 저장.
- 새로운 파일 이름 생성 및 변경:
- generate_unique_time 함수를 호출하여 새로운 파일 이름을 생성. 이 함수는 시간 정보를 기반으로 한 고유한 파일 이름을 생성.
- os.rename()을 사용하여 원래 파일의 이름을 새로 생성된 이름으로 변경.
728x90def rename_to_time(path: str, files: list[str], tag_time: str, \ exif_time_format: str, file_name_format: str, time_delta: float): for file in files: _, extension = os.path.splitext(file) file_path = os.path.join(path, file) try: # exif time with open(file_path, 'rb') as f: tags = exifread.process_file(f) # type: ignore time_str = str(tags[tag_time]) time = dt.datetime.strptime(time_str, exif_time_format) except: # birth time time_stamp = os.stat(file_path).st_birthtime time = dt.datetime.fromtimestamp(time_stamp) new_file_path = generate_unique_time(path, extension, time, \ time_delta, file_name_format) os.rename(file_path, new_file_path)
generate_unique_time()
Python/날짜와 시간으로 사진 이름 변경 - 3.1 유니크한 파일 이름 설정
EXIF Tag의 종류
def get_exif_tag_keys(path_file): with open(path_file, 'rb') as f: tags = exifread.process_file(f) print(tags.keys())
Image Make Image Model Image Orientation Image XResolution Image YResolution Image ResolutionUnit Image Software Image DateTime Image HostComputer Image ExifOffset GPS GPSLatitudeRef GPS GPSLatitude GPS GPSLongitudeRef GPS GPSLongitude GPS GPSAltitudeRef GPS GPSAltitude GPS GPSTimeStamp GPS GPSSpeedRef GPS GPSSpeed GPS GPSImgDirectionRef GPS GPSImgDirection GPS GPSDestBearingRef GPS GPSDestBearing GPS GPSDate Image GPSInfo EXIF ExposureTime EXIF FNumber EXIF ExposureProgram EXIF ISOSpeedRatings EXIF ExifVersion EXIF DateTimeOriginal EXIF DateTimeDigitized EXIF OffsetTime EXIF OffsetTimeOriginal EXIF OffsetTimeDigitized EXIF ShutterSpeedValue EXIF ApertureValue EXIF BrightnessValue EXIF ExposureBiasValue EXIF MeteringMode EXIF Flash EXIF FocalLength EXIF SubjectArea EXIF MakerNote EXIF SubSecTimeOriginal EXIF SubSecTimeDigitized EXIF ColorSpace EXIF ExifImageWidth EXIF ExifImageLength EXIF SensingMethod EXIF SceneType EXIF ExposureMode EXIF WhiteBalance EXIF FocalLengthIn35mmFilm EXIF LensSpecification EXIF LensMake EXIF LensModel EXIF Tag 0xA460 728x90'코딩 > Python' 카테고리의 다른 글
Python/날짜와 시간으로 사진 이름 변경 - 3.1 유니크한 파일 이름 설정 (0) 2024.01.18 Python/파일을 다루는 두 가지 방식, with... 와 f=open() (0) 2024.01.18 Python/날짜와 시간으로 사진 이름 변경 - 2. 임시 이름 변경 (0) 2024.01.18 Python/날짜와 시간으로 사진 이름 변경 - 1. 파일 목록 가져오기 (0) 2024.01.18 Pythone/concat()을 사용하여 Pandas DataFrame을 합치기 (0) 2023.12.20 - rename_to_time 함수: