【发布时间】:2018-11-16 23:21:51
【问题描述】:
我有一个程序需要能够从 YAML 文件中提取文本块,对其进行哈希处理,将其与上一次“运行”进行比较,然后根据结果做出决定。有问题的代码:
21 def parse_file(self):
22 ¦ webservers_template = os.path.abspath('templates/webservers.yaml')
23 ¦ with open(webservers_template, 'rb') as stream:
24 ¦ ¦ try:
25 ¦ ¦ ¦ print(stream.read())
26 ¦ ¦ ¦ metadata_blob = re.findall(r'\n Metadata:(.*?)\n Properties:', str(stream)
)
27 ¦ ¦ ¦ print(metadata_blob)
28 ¦ ¦ ¦ return bytes(metadata_blob)
29 ¦ ¦ except yaml.YAMLError as exc:
30 ¦ ¦ ¦ print(exc)
文件templates/webservers.yaml 是一个基于 YAML 的 cloudformation 模板。这看起来像this。
我要执行的操作是我有一个唯一关键字Metadata 和一个非唯一关键字Properties,我想返回这两个关键字之间的所有文本,它的格式不'除了可靠性之外没有任何要求,它必须始终以相同的方式返回,因为它将是散列函数的输入,自然我将散列函数的输出用于差异操作,所以误报不会乐于助人。
我目前遇到的问题是print(metadata_blob) 没有返回任何内容,它只是返回给我一个空列表。
为了让您对我正在执行的操作有一个模糊的了解,我尝试绕过一些 AWS 功能,以便在我更改 LaunchConfiguration 元数据时引发 UpdatePolicy 操作。不过,这对于这个问题可能并不重要。
我对这个有点迷茫,如果我目前解决这个问题的方法没有意义,请随时为我指出更合适的方向。
我在撰写本文时阅读并“借用”了一些问题。
How can I parse a YAML file in Python
How to extract information between two unique words in a large text file
【问题讨论】: