防止长行被ruamel.yaml包裹

时间:2017-02-11 00:13:59

标签: python yaml ruamel.yaml

我使用load_yaml_guess_indent(f, preserve_quotes=True)来读取YAML文件,然后修改它并将其写回。我注意到长线在回写时会被包裹起来。 (在80-85个字符后插入换行符。)是否有可以通过的参数来阻止这种情况发生?

1 个答案:

答案 0 :(得分:5)

这些是您可以提交给round_trip_dump()的参数:

def round_trip_dump(data, stream=None, Dumper=RoundTripDumper,
                default_style=None, default_flow_style=None,
                canonical=None, indent=None, width=None,
                allow_unicode=None, line_break=None,
                encoding=enc, explicit_start=None, explicit_end=None,
                version=None, tags=None, block_seq_indent=None,
                top_level_colon_align=None, prefix_colon=None):

您正在寻找的是width

如果您使用的是新的(ruamel.yaml >= 0.15)API,那么大多数这些参数会直接转换为您创建的YAML实例上的属性,因此在这种情况下您可以这样做:

yaml = ruamel.yaml.YAML()
yaml.width = 4096  # or some other big enough value to prevent line-wrap
yaml.dump(data, stream=your_stream)