Spaces:
Running
Running
| import os | |
| def check_exists_files(files,dirs,exit_on_error=True): | |
| if files is not None: | |
| if isinstance(files, str): | |
| files = [files] | |
| for file in files: | |
| if not os.path.isfile(file): | |
| print(f"File {file} not found") | |
| if exit_on_error: | |
| exit(1) | |
| else: | |
| return 1 | |
| if dirs is not None: | |
| if isinstance(dirs, str): | |
| dirs = [dirs] | |
| for dir in dirs: | |
| if not os.path.isdir(dir): | |
| print(f"Dir {dir} not found") | |
| if exit_on_error: | |
| exit(1) | |
| else: | |
| return 1 | |
| return 0 | |
| image_extensions =[".jpg"] | |
| def add_name_suffix(file_name,suffix,replace_suffix=False): | |
| if not suffix.startswith("_"):#force add | |
| suffix="_"+suffix | |
| name,ext = os.path.splitext(file_name) | |
| if replace_suffix: | |
| index = name.rfind("_") | |
| if index!=-1: | |
| return f"{name[0:index]}{suffix}{ext}" | |
| return f"{name}{suffix}{ext}" | |
| def replace_extension(file_name,new_extension,suffix=None,replace_suffix=False): | |
| if not new_extension.startswith("."): | |
| new_extension="."+new_extension | |
| name,ext = os.path.splitext(file_name) | |
| new_file = f"{name}{new_extension}" | |
| if suffix: | |
| return add_name_suffix(name+new_extension,suffix,replace_suffix) | |
| return new_file | |
| def list_digit_images(input_dir,sort=True): | |
| digit_images = [] | |
| global image_extensions | |
| files = os.listdir(input_dir) | |
| for file in files: | |
| if file.endswith(".jpg"):#TODO check image | |
| base,ext = os.path.splitext(file) | |
| if not base.isdigit(): | |
| continue | |
| digit_images.append(file) | |
| if sort: | |
| digit_images.sort() | |
| return digit_images | |
| def list_suffix_images(input_dir,suffix,is_digit=True,sort=True): | |
| digit_images = [] | |
| global image_extensions | |
| files = os.listdir(input_dir) | |
| for file in files: | |
| if file.endswith(".jpg"):#TODO check image | |
| base,ext = os.path.splitext(file) | |
| if base.endswith(suffix): | |
| if is_digit: | |
| if not base.replace(suffix,"").isdigit(): | |
| continue | |
| digit_images.append(file) | |
| if sort: | |
| digit_images.sort() | |
| return digit_images | |
| import time | |
| class ProgressTracker: | |
| """ | |
| ๅฆ็ใฎ้ฒๆ็ถๆณใ่ฟฝ่ทกใใ็ต้ๆ้ใจๆฎใๆ้ใ่กจ็คบใใใฏใฉในใ | |
| """ | |
| def __init__(self,key, total_target): | |
| """ | |
| ใณใณในใใฉใฏใฟ | |
| Args: | |
| total_target (int): ๅฆ็ๅฏพ่ฑกใฎ็ทๆฐ | |
| """ | |
| self.key = key | |
| self.total_target = total_target | |
| self.complete_target = 0 | |
| self.start_time = time.time() | |
| def update(self): | |
| """ | |
| ้ฒๆใ1ใค้ฒใใใ | |
| ็ต้ๆ้ใจๆฎใๆ้ใ่กจ็คบใใใ | |
| """ | |
| self.complete_target += 1 | |
| current_time = time.time() | |
| consumed_time = current_time - self.start_time | |
| remain_time = (consumed_time / self.complete_target) * (self.total_target - self.complete_target) if self.complete_target > 0 else 0 | |
| print(f"stepped {self.key} {self.total_target} of {self.complete_target}, consumed {(consumed_time / 60):.1f} min, remain {(remain_time / 60):.1f} min") | |