私は複数の環境で動作するいくつかのPythonコードを持っています。コードは環境変数の存在をチェックし、定義されている環境変数に応じて少し異なるパスをとります。コードは次のとおりです。条件付きで変数を作成する
def _get_sink_to_function():
# Determine which path we send data to, based on env variables
# One of the following env variables must be present.
funcdict = {
'LOG_SINK': _post_gzip_to_log_sink,
'FIREHOSE_SINK': _post_gzip_to_firehose_sink
}
for v in funcdict.keys():
if os.environ.get(v):
return funcdict[v]
return None
main():
sink_to_func = _get_sink_to_function()
if not sink_to_func:
raise AssertionError('Missing mandatory env variable')
...
sink_to_func(gzip_data)
環境変数は、
したがって、私は環境変数を条件付きで作成したいと思います。
例えば、この(有効)ansibleコードで:
LOG_SYNC: "{% if logger == 'one' %}path-to-the-log{% endif %}"
LOG_SYNCが常に時々「パス・ツー・ログ」の値と、時には空として、定義されます。 loggerが 'one'と等しくない場合、LOG_SYNCはまったく定義されないようにします。許可されていないようだという、
{% if logger == 'one' %}
LOG_SYNC: "path-to-the-log"
{% endif %}
しかし:つまり
は、私のような何かをしたいです。
は、[XYの問題]のように思える(https://meta.stackexchange.com/questions/66377/what-is -the-xy-problem)...まともなアドバイスを得るために実際のコンテキストを追加してください。 –
私はコンテキストを追加しました。追加情報が必要な場合はお知らせください。 – Roger
あなたはどのようにして環境を設定しますか?それに応じて、例えば、環境オブジェクトを設定するために 'ternary'フィルタを使うことができます。 –