1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| import os import re import argparse
def get_args(): parser = argparse.ArgumentParser() parser.add_argument('-i', '--image_directory', type=str, default='.\img') parser.add_argument('-o', '--out_image_directory', type=str, default='img_new') parser.add_argument('-n', '--name', type=str, default='图片') parser.add_argument('-p', '--position', type=str, default='front') parser.add_argument('-f', '--factor', type=float, default=1) parser.add_argument('-l', '--link_symbol', type=str, default='_') return parser.parse_args()
def extract_number(filename): match = re.search(r'\d+', filename) if match: return int(match.group()) return 0
def main(): args = get_args() image_directory = args.image_directory out_image_directory = args.out_image_directory name = args.name position = args.position factor = args.factor link_symbol = args.link_symbol
ul_directory = '/'.join(image_directory.split('/')[:-1]) new_out_image_directory = f'{ul_directory}/{out_image_directory}' if not os.path.exists(new_out_image_directory): os.makedirs(new_out_image_directory)
files = os.listdir(image_directory)
files_sorted = sorted(files, key=extract_number)
new_name = '图片' for index, filename in enumerate(files_sorted): if position == 'front': new_name = f'{name}{link_symbol}{int(index *factor)}.jpg' if position == 'back': new_name = f'{int(index *factor)}{link_symbol}{name}.jpg' else: new_name = f'{name}{link_symbol}{int(index *factor)}.jpg' old_file = os.path.join(image_directory, filename) new_file = os.path.join(new_out_image_directory, new_name) os.rename(old_file, new_file) print(f'Renamed: {filename} -> {new_name}')
try: os.rmdir(image_directory) except OSError as e: print(f"Error: {e.strerror}")
print('All files have been renamed.')
if __name__ == '__main__': main()
PYTHON
|