Python-скрипт для загрузки и повторного сохранения YAML рекурсивно

Это можно использовать для исправления того, что PyYAML генерирует немного отличающиеся YAML-файлы по форматированию от любого файла, созданного вручную. Например, вы можете сначала использовать этот скрипт для создания чистого diff только для повторного сохранения, а затем запустить другой скрипт для модификации YAML для более чистого 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"Обработано: {file_path}")
        except Exception as e:
            print(f"Ошибка обработки {file_path}: {e}")

def main():
    parser = argparse.ArgumentParser(description="Загрузить и пересохранить YAML файлы.")
    parser.add_argument('files', nargs='*', help="YAML файлы для обработки. Если не указаны, ищет все *.yaml файлы в текущем каталоге и подкаталогах.")
    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()

Check out similar posts by category: Python