YAMLファイル内のドキュメントをdict
にマッピングし、それらを適切にマッピングするという次の問題があります。YAMLファイルをpython dictに変換する
私は、サーバー(db.yml
)を表し、次のYAMLファイルを、持っている:私は、私は何の問題もなく行うことができ、このYAMLファイルをロード
instanceId: i-aaaaaaaa
environment:us-east
serverId:someServer
awsHostname:ip-someip
serverName:somewebsite.com
ipAddr:192.168.0.1
roles:[webserver,php]
を、私はそれを理解すると思います。 instanceId
一致していることを設定した場合、マップは、文書内のすべての辞書で
- 負荷YAML:
instanceId = getInstanceId() stream = file('db.yml', 'r') dict = yaml.load_all(stream) for key in dict: if key in dict == "instanceId": print key, dict[key]
私は次のように動作するロジックを希望します
getInstanceId()
によって、その文書のすべてのキーと値を印刷します。
私は、コマンドラインから地図データの構造を見れば、私が取得:
{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}
私は不適切YAMLファイルのデータ構造を作成するかもしれないと思う、との内容の一致にdict
、私は少し失われています。
サイドノート:yaml.load()
を使用してこのファイルのすべてのドキュメントを読み込むことができませんでしたが、私はyaml.load_all()
を試しましたが、私の主な問題は依然として存在しています。
'dict'の名前を変更してください。それは悪い悪いです。また、 'yaml.load_all(stream)'の値を表示して、実際に何があるのかを見ることができますか?最後に、あなたが良いYAMLサンプルを含んでいるようには見えません - 複数のサーバがどこに定義されていますか? – gahooa
名前を変更します。ベストプラクティスに感謝します。 yaml_load_all(ストリーム)は、<ジェネレータオブジェクトload_all at 0x10b2648c0>を示します。トラブルシューティングのために2番目の文書を削除しました。 –
コードにはどのライブラリ/モジュールが使用されていますか?私は、この質問を見つける人がそれを検索する必要はなく、潜在的に複数の可能なものを見つけることができるように、この質問を改善すると思います。 – Zelphir