私の目的は、空の可能性があるYAMLファイルにキー値のペアを挿入することです。Pythonのruamel.yamlの空のyamlファイルにキー値のペアを挿入するには?
たとえば、私のhiera.yaml
(人形で使用される)ファイルにはハイフンが3つしかありません。私はそれが好きで実行しています
#!/usr/bin/python
import ruamel.yaml
import sys
def read_file(f):
with open(f, 'r') as yaml:
return ruamel.yaml.round_trip_load(yaml)
dict = {}
dict['first_name'] = sys.argv[1]
dict['last_name'] = sys.argv[2]
dict['role'] = sys.argv[3]
data = read_file('hiera.yaml')
pos = len(data)
data.insert(pos, sys.argv[1], dict, None)
ruamel.yaml.round_trip_dump(data, open('hiera.yaml', 'w'), block_seq_indent=1)
:ここ
は私のコードです./alice.pyアリスDoeの開発
私が手のような出力:
Traceback (most recent call last):
File "./alice.py", line 16, in <module>
pos = len(data)
TypeError: object of type 'NoneType' has no len()
しかし、私のhiera.yamlファイルが空でない場合、例えば:
$ cat hiera.yaml
john:
$./alice.py Alice Doe Developer
$ cat hiera.yaml
john:
alice:
first_name: Alice
last_name: Doe
role: Developer
次に正しく動作します。
空のYAMLファイルにキー値のペア(私の場合はdict)を挿入する方法を教えてください。 ruamel.yaml公式ページの例では、ドキュメント文字列をサンプルYAMLコンテンツとして使用し、次にキーと値のペアを挿入します。
のおかげでOz123&Anthonの単一のパラメータしか取らないでしょう。 – abhishek
しかし、Anthonの答えは私にとってはより適切です。 – abhishek
Oz123私は、追加のためにあなたの開け方を心配しています。 IMOはYAMLファイルでこれを行うべきではありません。そうした場合、ファイルをアンロード可能(YAMLが正しくない)にすることができます。 – Anthon