概要
定義した spec 内で日本語を使っている場合は to_yaml
を使わずに yaml.dump
を使いましょう
to_yaml
は内部的には yaml.dump
を使っていますがオプションが使えないようになっています
環境
- macOS 11.1
- Python 3.8.7
- apispec 4.0.0
文字化けするコード
with open(file_path, mode='w') as f:
f.write(spec.to_yaml())
yaml.dump を使う
import yaml
with open(file_path, mode='w') as f:
yaml.dump(spec.to_dict(), f, allow_unicode=True)
allow_unicode=True
を忘れずに設定してください
おまけ: OrderedDict が入っている場合
to_dict
した dict 内に OrderedDict が入っている場合以下の処理を追加しましょう
import yaml
from collections import OrderedDict
with open(file_path, mode='w') as f:
represent_dict_order = lambda self, data: self.represent_mapping("tag:yaml.org,2002:map", data.items())
yaml.add_representer(OrderedDict, represent_dict_order)
yaml.dump(spec.to_dict(), f, allow_unicode=True)
0 件のコメント:
コメントを投稿