Это можно использовать для исправления того, что 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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow