奇怪的输出来自山药垃圾场

2024-06-16 09:50:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始用山药,我很喜欢。然而,前几天我遇到了一个看起来很奇怪的案子,我不知道是什么原因造成的。我有一个文件路径位置列表和另一个文件路径目标列表。我用它们创建了一个字典,然后使用yaml将其转储出来供以后阅读(我与艺术家一起工作,使用yaml以便人类也能阅读)。在

很抱歉名单太长了:

source = ['/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/model/v026_03/blackhawk_diff.exr', '/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/model/v026_03/blackhawk_maskTapeFloor.1051.exr', '/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/model/v026_03/blackhawk_maskBurnt.1031.exr']
dest = ['/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/texture/v0006/blackhawk_diff_diffuse_v0006.exr', '/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/texture/v0006/blackhawk_maskTapeFloor_diffuse_v0006.1051.exr', '/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/texture/v0006/blackhawk_maskBurnt_diffuse_v0006.1031.exr']
dictionary = dict(zip(source, dest))
print yaml.dump(dictionary)

这是我得到的输出:

^{pr2}$

它很好地回来了山药负荷,但这对于艺术家在需要时能够进行编辑是没有用处的。在


Tags: buildyamlmapdatamodeljobworktasks
1条回答
网友
1楼 · 发布于 2024-06-16 09:50:09

这是the FAQ中的第一个问题。在

By default, PyYAML chooses the style of a collection depending on whether it has nested collections. If a collection has nested collections, it will be assigned the block style. Otherwise it will have the flow style.

If you want collections to be always serialized in the block style, set the parameter default_flow_style of dump() to False.

所以:

>>> print yaml.dump(dictionary, default_flow_style=False)
/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/model/v026_03/blackhawk_diff.exr: /data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/texture/v0006/blackhawk_diff_diffuse_v0006.exr
/data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/model/v026_03/blackhawk_maskBurnt.1031.exr: /data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/texture/v0006/blackhawk_maskBurnt_diffuse_v0006.1031.exr
? /data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/model/v026_03/blackhawk_maskTapeFloor.1051.exr
: /data/job/maze/build/vehicle/blackhawk/blackhawkHelicopter/work/data/map/tasks/texture/v0006/blackhawk_maskTapeFloor_diffuse_v0006.1051.exr

仍然不是很漂亮,但是当你有超过80个字符的字符串作为键时,它就和你可以合理预期的一样好。在

如果您在对象层次结构中建模(部分)文件系统层次结构,或者为树的某些部分创建别名(或动态别名),那么YAML看起来会更好。但这实际上是必须在对象模型级别上做的事情;就YAML而言,那些充满重复前缀的长路径只是字符串。在

相关问题 更多 >