Python skript pro načtení a znovu uložení YAML rekurzivně

To může být použito pro opravu PyYAML generujícího mírně odlišné YAML soubory formátováním než jakýkoliv ručně generovaný soubor. Například můžete použít tento skript nejprve pro vygenerování čistého diffu pouze pro opětovné uložení, poté spustit další skript pro modifikaci YAML pro čistší diff.

resave_yamls.py
#!/usr/bin/env python3
import argparse
import yaml
import pathlib

def load_and_save_yaml(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        data = yaml.safe_load(file)
    with open(file_path, 'w', encoding='utf-8') as file:
        yaml.safe_dump(data, file)

def process_files(file_paths):
    for file_path in file_paths:
        try:
            load_and_save_yaml(file_path)
            print(f"Zpracováno: {file_path}")
        except Exception as e:
            print(f"Chyba při zpracování {file_path}: {e}")

def main():
    parser = argparse.ArgumentParser(description="Načíst a znovu uložit YAML soubory.")
    parser.add_argument('files', nargs='*', help="YAML soubory ke zpracování. Pokud nejsou poskytnuty, vyhledá všechny *.yaml soubory v aktuálním adresáři a podadresářích.")
    args = parser.parse_args()

    if args.files:
        file_paths = [pathlib.Path(file) for file in args.files]
    else:
        file_paths = list(pathlib.Path('.').rglob('*.yaml'))

    process_files(file_paths)

if __name__ == "__main__":
    main()

Podívejte se na podobné články podle kategorie: Python