2

以下のディレクトリとファイル構造があります。これらの以下のフォルダー内のすべての yaml ファイルから 1 つの yaml ファイルを作成したいと考えています。

[root@localhost test]# tree
.
├── group_vars
│   └── all.template
├── host_vars
│   └── host.template
└── vars
    ├── CASSANDRA
    ├── CQLSH
    ├── CSYNC2
    ├── DSE_OPSCENTER
    ├── DSE_OPSCENTER_AGENT
    ├── logging.template
    ├── packages_vars.template
    ├── UDM
    └── user_pub_keys

結果は次のようになります (yaml ファイルの例)

group_vars/all.template:
    <all the all.template data at this indentation>
host_vars/host.template:
    <all the host.template data at this indentation>
vars/CASSANDRA:
    <all the CASSANDRA data at this indentation>
vars/CQLSH:
    <all the CQLSH data at this indentation>
... so  on

フォルダー内でこれらのファイルを結合できますが、上記で説明した yaml の形式をどのようにもたらすことができるかわかりません。

私が試したことは?

ファイルに書き込んでから、<folder_name>/file_name>4つのスペースを与えて、内容をそのまま書き出すというアイデアを思いつきました。

以下のようなもの

with open(actual_path) as i: # actual path is just the path to the file
    outfile.write('vars#'+fname) # vars is the folder name and fname is the file name. # is just any separator for the file
    outfile.write(i.read()) # here I can add 4 spaces 
    outfile.write('\n')

これは、yaml ファイルを希望どおりに作成する良い方法ですか? もしそうなら、4つのスペースの後にファイルを(そのまま)書き始める方法を知る必要があります。

4

2 に答える 2

0

おそらく、有効な YAML ファイルを出力として使用するためのより良いオプションは、PyYAMLを使用することです。これにより、すべての YAML ファイルを読み取り、それらをメモリ内で結合してから、結果のオブジェクトを新しいファイルにダンプできます。

于 2018-02-01T11:50:22.877 に答える