Как мне вставить переменные в байтовую строку? - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь автоматизировать некоторые экземпляры AWS с помощью python, и они требуют, чтобы userData - команды, выполняемые при запуске экземпляра, - были строкой байтов. Я хочу запустить несколько экземпляров с немного разными командами запуска. Я пробовал это:

userData = base64.b64encode(
    b"""#! /bin/bash
bash runScript.sh -f {param}
""".format(param=x)
    ).decode('ascii')

Это не работает, потому что строки байтов не имеют метода форматирования. Как лучше всего вставить строковые переменные в байтовую строку?

1 Ответ

1 голос
/ 05 августа 2020

Работа со строками, а затем кодирование в байты:

user_data_str = """#! /bin/bash
bash runScript.sh -f {param}
""".format(param=x)

user_data_bytes = user_data_str.encode("utf-8") # just in case there's non-ascii chars
user_data_base64_bytes = base64.b64encode(user_data_bytes)
user_data_base64_str = user_data_base64_bytes.decode("ascii")

Если вы используете Python> 3.6 (вы должны использовать Python 3.7), используйте f"" строки для создания ваш код более читабельный:

user_data_str = f"""#! /bin/bash
bash runScript.sh -f {x}
"""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...