У меня есть программа, которой требуется возможность извлекать текстовый блок из файла 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.Это выглядит примерно так: this .
Действие, которое я пытаюсь выполнить, состоит в том, что у меня есть уникальное ключевое слово Metadata
и неуникальное ключевое слово Properties
, и я хотел бычтобы вернуть ВСЕ текст между этими двумя ключевыми словами, форматирование этого не имеет никаких требований, кроме надежности, оно должно последовательно возвращаться одинаково, так как это будет ввод для хэш-функции, и, естественно, я используювывод хеш-функции для операции сравнения, поэтому ложные срабатывания не помогут.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что print(metadata_blob)
ничего не возвращает, он просто возвращает мнепустой список.
Чтобы дать вам смутное представление о выполняемом мною действии, я пытаюсь обойти некоторые функции AWS, чтобы вызвать действия UpdatePolicy при изменении метаданных LaunchConfiguration.Это, вероятно, не важно в отношении вопроса.
Я чувствую себя немного растерянным с этим, и если мой нынешний метод решения этого не имеет смысла, не стесняйтесь указать мне вболее подходящее направление.
Некоторые вопросы, которые я прочитал и «заимствовали» идеи, когда писали это.
Как я могу проанализировать файл YAML в Python
Как извлечь информацию из двух уникальных слов в большой текстовый файл