Python-Skript zum rekursiven Laden & erneuten Speichern von YAMLs

Dies kann verwendet werden, um zu beheben, dass PyYAML durch Formatierung leicht abweichende YAML-Dateien erzeugt als jede manuell erstellte Datei. Beispielsweise kannst du dieses Skript zuerst verwenden, um einen sauberen Diff nur durch erneutes Speichern zu erzeugen, und dann ein anderes Skript ausführen, um die YAML zu modifizieren, für einen saubereren 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"Verarbeitet: {file_path}")
        except Exception as e:
            print(f"Fehler beim Verarbeiten von {file_path}: {e}")

def main():
    parser = argparse.ArgumentParser(description="YAML-Dateien laden und neu speichern.")
    parser.add_argument('files', nargs='*', help="Zu verarbeitende YAML-Dateien. Wenn nicht angegeben, wird nach allen *.yaml-Dateien im aktuellen Verzeichnis und Unterverzeichnissen gesucht.")
    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()

Ähnliche Beiträge nach Kategorie: Python