2017-12-06 11 views
0

내 YAML은업데이트 목록 파이썬과 YAML의 핵심은

server-params: 
    environment: prod 
    artifact_version: 0.0.0.* 
    jobs: ['test','test2'] 

나는이

을 시도, 내가 다른 키는 작업 이름 및 출력 아래와 같이 예상 삽입 할이

server-params: 
    environment: prod 
    artifact_version: 0.0.0.* 

처럼 보인다

jobs_list =['test','test2'] 

params = yaml.safe_load(params) 
params['server-params']['jobs']=jobs_list 
yaml.dump(params, default_flow_style=False) 


output: 
    server-params: 
     environment: prod 
     artifact_version: 0.0.0.* 
     jobs: 
     - test 
     - test2 
+0

. shiv455 출력을 받고, 그냥 잘못된 스타일 – tinita

+0

@tinita 죄송합니다. 이제 알겠습니다. ✌ –

답변

1

default_flow_style 매개 변수가 손실됩니다 (또는 True으로 설정).

test_yaml = """ 
server-params: 
    environment: prod 
    artifact_version: 0.0.0.* 
""" 

jobs_list = ['test', 'test2'] 

params = yaml.safe_load(test_yaml) 
params['server-params']['jobs'] = jobs_list 

print(yaml.dump(params)) 

얻을 것 어느 : 당신이 당신의 YAML은 상점, 당신이 사용하고있는 모듈에 따라 달라집니다 주문한 유지하려면

server-params: 
    artifact_version: 0.0.0.* 
    environment: prod 
    jobs: [test, test2]

r은 예를 들어, 당신 YAML에 확장하지 나열 모든 것들 YAML. 당신은 ruamel.yaml를 사용하고 (당신이하지 않으면, 당신은해야한다)를 DumperLoaderruamel.yaml.RoundTripDumperruamel.yaml.RoundTripLoader를 사용하는 경우. 당신이 PyYAML를 사용하는 경우에는 yamlordereddictloader 모듈을 사용할 수 있습니다. 나는 당신이에 링크 된 질문의 중복하지 생각 @pii_ke