PyYAML如何插入长的多行字符串

问题描述 投票:0回答:1

你好,我有这个Yaml文件

  host_image: 
  host_flavor:
  host_key_private: 
  host_key_public: 

并且,鉴于所有的字符串值,我都希望以此yaml结尾

  host_image: 8da0966a-dc3b-4501-b35e-26aa3c210bf7
  host_flavor: 2
  host_key_private: |
    -----BEGIN RSA PRIVATE KEY-----
    MIIEpQIBAAKCAQEAyyYOpHKYDTdJWJxyXd19uzSKPa74388FWtY5WyVC1fkYJ4Zp
    Bj1OwQqXuodJjvTM+KWAkzz/UHFR6OZ7PPEXG8HLYd5DsSPAijdzZJMz7kTEk1il
    JXBXInlGIVFi2qcyz8S/UxwXBn5QHWiHcxMz8PsoErDN1KrBTWP9WPFexy+axGPB
    9dgVXVoe4bGiBuKGBhHVu3WPL8SVVxFuATrPyg78X9LOCIIpvz0w+1tKpBBH5HPI
    kXW9G7ATMp/lFqC4NpkBFWlgKUwBr/x0wkVQ2/Qa0w4tIKynQCS5QygcZuzqGVNE
    Kfio7blZsmwe7imEfsHk/DkogK9cZZXwfdLmSwIDAQABAoIBAGfOxbKwwBQYyUkX
    gLWIZiRQX8fPbmtnbVQSnfJ+Yt3WUMp5u5ctot2wHQJ6+VKss0TnxYD3rXucvH9n
    r1ff1rAfYl9bZXnSTCQU28lsEyBRUaX9qT4tXslF8Vk7LmmPAL78ycudUgLGbwfo
    Dzb1fBhLLxoF8NgYfXiffKmDhawANO2Zy6N+sdcv8eKpQlRrha0OeBVAbwif1p54
    DBiN8cGWqIcqzPnOznQtAlUrxxYmCAp0l/tQc6+GaObABVIWFf0J9JluyP08lTte
    9wbvNMUIF0JqsYVxd9AjQJKjKKocyzRzi+yh3c6+esK+drsxfK/hBj1GWdICNpJs
    sdbEReECgYEA8t7vgQgvhpN96ZvAq76MUE1SIYIkqnymQhwwXJpZCnqPlotnwK8F
    3zMnUC64PjjTbECb9w1aa8HT5vFidCdpc74hlDyBhs8sviaCrfZTpay+Zd9U2sQX
    16U72fJjhWph7Q2k3/xfETnkXzVlgCg49wo2CeOxhtP+E9DcH1QRTbsCgYEA1iFp
    FV5wnTy1tfnFt+J0Y4mFcCVYWh2ercBfyIJFaW363h06RdQh4Ur/k2g2f1n9xKJ0
    XtBiyMscEX2tK3Jpc6SBePnPumCN43iv8tvzDANROV7SKJWhe7ZAuQyJdXTeTSAd
    x/0HmS5Ip+PXCdeHC/0TY239E+5jK2u0WW89+LECgYEAnqius49iZLrjjYG3Szru
    tOLeHY/EXi+R+SwrF8OpGWRZexJU1BZCcr4bF5F9wQAkddp7SNhLUovL31mfZJv+
    kqMJkqo4P5YF9652vihmGpwPwcM0zrk9jh2eTNHA2/5UPKUmKUDX5gv4uY3LYf5k
    wFXGWY2Kgrboi49szXaA21MCgYEAt0skK4GKvl2wYdQrditnW6jlS0j8Zy9BnBO3
    KeixR/03qBe2wP1D/xj2yxSCyeKbgk1ZdavFU4HhReuhZzZpo+7mUUrtkOmDq3qs
    iiPS2a6hQY20Mb9b2oz4vC5KH/vpKnXaaE1kyq++y9ARS8BtPkrk5NDKuNvvkcSB
    PakmkBECgYEAnLoM1I2Pm4ajOFW+BkH99Tf1BmWNDjuLAlONYoRWb8LjrVsyhUPw
    NryYqzH6IWQpiZO/cyoJ4gmdOqwWZ/8gGYKESxms4QfCmMTNVQ9yJKvIyPRlvTsc
    x0SyqE4DRztUJUmACUIU570vaUa0kwKglFS5wAh49Fo3NTxBIdITbSw=
    -----END RSA PRIVATE KEY-----

我仅对host_key_private有一个问题,因为我知道它太长了,但是我不知道如何用块编写。我的脚本是这个

    import yaml
    # edit input file adding node's inputs
    with open(yamlFile) as f:
        doc = yaml.safe_load(f)
        doc['host_flavor'] = host_flavor
        doc['host_image'] = host_image
        doc['host_key_private'] = host_key_private
    with open(yamlFile, 'w') as f:
        yaml.dump(doc, f)

我得到的是这个:

host_flavor: 2
host_image: 8da0966a-dc3b-4501-b35e-26aa3c210bf7
host_key_private: '-----BEGIN RSA PRIVATE KEY-----MIIEpQIBAAKCAQEAyyYOpHKYDTdJWJxyXd19uzSKPa74388FWtY5WyVC1fkYJ4ZpBj1OwQqXuodJjvTM+KWAkzz/UHFR6OZ7PPEXG8HLYd5DsSPAijdzZJMz7kTEk1ilJXBXInlGIVFi2qcyz8S/UxwXBn5QHWiHcxMz8PsoErDN1KrBTWP9WPFexy+axGPB9dgVXVoe4bGiBuKGBhHVu3WPL8SVVxFuATrPyg78X9LOCIIpvz0w+1tKpBBH5HPIkXW9G7ATMp/lFqC4NpkBFWlgKUwBr/x0wkVQ2/Qa0w4tIKynQCS5QygcZuzqGVNEKfio7blZsmwe7imEfsHk/DkogK9cZZXwfdLmSwIDAQABAoIBAGfOxbKwwBQYyUkXgLWIZiRQX8fPbmtnbVQSnfJ+Yt3WUMp5u5ctot2wHQJ6+VKss0TnxYD3rXucvH9nr1ff1rAfYl9bZXnSTCQU28lsEyBRUaX9qT4tXslF8Vk7LmmPAL78ycudUgLGbwfoDzb1fBhLLxoF8NgYfXiffKmDhawANO2Zy6N+sdcv8eKpQlRrha0OeBVAbwif1p54DBiN8cGWqIcqzPnOznQtAlUrxxYmCAp0l/tQc6+GaObABVIWFf0J9JluyP08lTte9wbvNMUIF0JqsYVxd9AjQJKjKKocyzRzi+yh3c6+esK+drsxfK/hBj1GWdICNpJssdbEReECgYEA8t7vgQgvhpN96ZvAq76MUE1SIYIkqnymQhwwXJpZCnqPlotnwK8F3zMnUC64PjjTbECb9w1aa8HT5vFidCdpc74hlDyBhs8sviaCrfZTpay+Zd9U2sQX16U72fJjhWph7Q2k3/xfETnkXzVlgCg49wo2CeOxhtP+E9DcH1QRTbsCgYEA1iFpFV5wnTy1tfnFt+J0Y4mFcCVYWh2ercBfyIJFaW363h06RdQh4Ur/k2g2f1n9xKJ0XtBiyMscEX2tK3Jpc6SBePnPumCN43iv8tvzDANROV7SKJWhe7ZAuQyJdXTeTSAdx/0HmS5Ip+PXCdeHC/0TY239E+5jK2u0WW89+LECgYEAnqius49iZLrjjYG3SzrutOLeHY/EXi+R+SwrF8OpGWRZexJU1BZCcr4bF5F9wQAkddp7SNhLUovL31mfZJv+kqMJkqo4P5YF9652vihmGpwPwcM0zrk9jh2eTNHA2/5UPKUmKUDX5gv4uY3LYf5kwFXGWY2Kgrboi49szXaA21MCgYEAt0skK4GKvl2wYdQrditnW6jlS0j8Zy9BnBO3KeixR/03qBe2wP1D/xj2yxSCyeKbgk1ZdavFU4HhReuhZzZpo+7mUUrtkOmDq3qsiiPS2a6hQY20Mb9b2oz4vC5KH/vpKnXaaE1kyq++y9ARS8BtPkrk5NDKuNvvkcSBPakmkBECgYEAnLoM1I2Pm4ajOFW+BkH99Tf1BmWNDjuLAlONYoRWb8LjrVsyhUPwNryYqzH6IWQpiZO/cyoJ4gmdOqwWZ/8gGYKESxms4QfCmMTNVQ9yJKvIyPRlvTscx0SyqE4DRztUJUmACUIU570vaUa0kwKglFS5wAh49Fo3NTxBIdITbSw=-----END
  RSA PRIVATE KEY-----'

编辑

host_key_private变量包含字符串“ ----- BEGIN RSA PRIVATE KEY ----- MIIEp ....”]

python yaml private-key pyyaml
1个回答
0
投票
尝试更改YAML转储程序的默认样式:

def repr_str(dumper, data): if '\n' in data: return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|') return dumper.org_represent_str(data) # to preserve readable yaml syntax yaml.SafeDumper.org_represent_str = yaml.SafeDumper.represent_str yaml.add_representer(str, repr_str, Dumper=yaml.SafeDumper) # this function should now output correctly formatted multi-line strings def write_yaml(filepath, parsed_yaml): with open(filepath, 'w') as f: yaml.safe_dump(parsed_yaml, f)

检查此内容以获得详细说明:https://stackoverflow.com/a/45004775/4383264
© www.soinside.com 2019 - 2024. All rights reserved.