如何防止YAML在没有新行的情况下转储长行

sha*_*pan 15 python yaml dump line-breaks long-lines

每当我的选项超出一定限度时,pyyaml会将其转换为两行.

怎么避免这个?

例如

在[1]中:x =" - c/home/user/test/test2/test23/tet/2s/test1/stest/longdirectory1/directory2/--optnion12 --verbose"

在[2]中: import yaml

在[3]中: print yaml.dump([dict(ATTRIBUTES=[dict(CONFIG=x)])], default_flow_style=False)

错了一个

- ATTRIBUTES:
  - CONFIG: -c /home/user/test/test2/test23/tet/2s/test1/stest/longdirectory1/directory2/
      --optnion12 --verbose
Run Code Online (Sandbox Code Playgroud)

应该是这样的

- ATTRIBUTES:
  - CONFIG: -c /home/user/test/test2/test23/tet/2s/test1/stest/longdirectory1/directory2/ --optnion12 --verbose
Run Code Online (Sandbox Code Playgroud)

sha*_*pan 22

感谢@MathieuMarques建议查看@ dump选项和提供的链接,YAML文档不足以找到它.

无论如何解决方案是指定函数的width参数dump.

yaml.dump(data, width=1000)

  • 更永久的解决方案是:`yaml.dump(data,width = float("inf"))` (12认同)
  • 或者,您可以使用 [`width=math.inf`](/sf/answers/2110991291/),它可能比 `float("inf")` 更具可读性(您需要 `import math `)。 (3认同)
  • _但是_,当使用更快的基于 C (LibYAML) 的转储器(例如 `Dumper=yaml.CSafeDumper`)时,您不能使用 `width=float("inf")`。在这种情况下,类似“width=2147483647”的内容就足够了。 (2认同)