ruamel.yaml dump:如何阻止映射标量值换行缩进?
问题解答
为什么name: xxx会被拆分成两行?
这种换行拆分确实和值的长度直接相关。ruamel.yaml默认有行宽限制(默认80字符),当name字段对应的镜像地址+SHA256哈希的字符串总长度超过这个限制时,库会自动触发换行逻辑,将值部分移到下一行并缩进显示。
如何阻止这种换行?
只需要调整YAML实例的width参数,将其设置为一个足够大的数值,确保完整的镜像地址字符串能在一行内容纳。修改后的代码如下:
from sys import stdout from ruamel.yaml import YAML yml = YAML() yml.width = 1000 # 设置足够大的行宽,避免长字符串被强制换行 doc = """ kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 storageConfig: local: path: ./operator-images mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14 packages: - name: rhods-operator channels: - name: fast minVersion: 2.7.0 maxVersion: 2.7.0 - name: nfd channels: - name: stable additionalImages: - name: quay.io/integreatly/prometheus-blackbox-exporter@sha256:35b9d2c1002201723b7f7a9f54e9406b2ec4b5b0f73d114f47c70e15956103b5 - name: quay.io/modh/codeserver@sha256:7b53d6c49b0e18d8907392c19b23ddcdcd4dbf730853ccdf153358ca81b2c523 - name: quay.io/modh/cuda-notebooks@sha256:00c53599f5085beedd0debb062652a1856b19921ccf59bd76134471d24c3fa7d - name: quay.io/modh/cuda-notebooks@sha256:4275eefdab2d5e32a7be26f747d1cdb58e82fb0cd57dda939a9a24e084bd1f7e - name: quay.io/modh/cuda-notebooks@sha256:6fadedc5a10f5a914bb7b27cd41bc644392e5757ceaf07d930db884112054265 - name: quay.io/modh/cuda-notebooks@sha256:88d80821ff8c5d53526794261d519125d0763b621d824f8c3222127dab7b6cc8 """ y = yml.load(doc) yml.dump(y, stdout)
执行修改后的代码后,mirror.additionalImages中的name字段会保持为一行,不会被拆分。
内容的提问来源于stack exchange,提问作者rsaw
相关产品推荐
相关产品推荐

