import os import sys import glob try: from opencc import OpenCC except ImportError: print("Error: 'opencc' package not found. Installing...") import subprocess subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'opencc']) from opencc import OpenCC def convert_filename(filename, cc): name, ext = os.path.splitext(filename) simplified_name = cc.convert(name) if simplified_name != name: return simplified_name + ext return None def main(): if len(sys.argv) < 2: print("Usage: python zhconv.py ") return raw_input = sys.argv[1].strip(' "\'') input_arg = os.path.abspath(raw_input) print(f"Target: {input_arg}") cc = OpenCC('t2s') if os.path.isfile(input_arg): target_dir = os.path.dirname(input_arg) target_files = [input_arg] elif os.path.isdir(input_arg): target_dir = input_arg target_files = None else: print(f"Error: Path '{input_arg}' does not exist.") return if target_files is None: target_files = glob.glob(os.path.join(target_dir, '*')) converted_count = 0 for file_path in target_files: if not os.path.isfile(file_path): continue filename = os.path.basename(file_path) new_filename = convert_filename(filename, cc) if new_filename: new_path = os.path.join(target_dir, new_filename) if os.path.exists(new_path): print(f"Skipped (already exists): {new_filename}") else: os.rename(file_path, new_path) print(f"Converted: {filename} -> {new_filename}") converted_count += 1 print(f"\nConverted {converted_count} file(s).") if __name__ == "__main__": main()