同じフォルダーにPythonスクリプトとシェルスクリプトがあり、どちらも構成が必要です。私は現在、Pythonスクリプト用のconfig.pyを持っていますが、Pythonスクリプトとシェルスクリプトの両方で簡単に読み取ることができる単一の構成ファイルを作成できるかどうか疑問に思っていました。
Pythonとシェルの両方で読み取るのに最適な構成ファイルの形式の例を誰かに教えてもらえますか?
同じフォルダーにPythonスクリプトとシェルスクリプトがあり、どちらも構成が必要です。私は現在、Pythonスクリプト用のconfig.pyを持っていますが、Pythonスクリプトとシェルスクリプトの両方で簡単に読み取ることができる単一の構成ファイルを作成できるかどうか疑問に思っていました。
Pythonとシェルの両方で読み取るのに最適な構成ファイルの形式の例を誰かに教えてもらえますか?
最も簡単な解決策は次のようになると思います:
key1="value1"
key2="value2"
key3="value3"
シェルでは、このenvファイルをソースするだけでよく、Pythonでは簡単に解析できます。
周りにスペースは許可されていません=
Pythonについては、次の投稿を参照してください:PythonでのBashの「ソース」のエミュレート
configobjlibはこれに役立ちます。
from configobj import ConfigObj
cfg = ConfigObj('/home/.aws/config')
access_key_id = cfg['aws_access_key_id']
secret_access_key = cfg['aws_secret_access_key']
これはシェルとPythonの両方で有効です。
NUMBER=42
STRING="Hello there"
他に何か要りますか?
「config.sh」ではなく「config.py」を保持すると、かなりのコードになります。
config.py
CONFIG_VAR = "value"
CONFIG_VAR2 = "value2"
script.py:
import config
CONFIG_VAR = config.CONFIG_VAR
CONFIG_VAR2 = config.CONFIG_VAR2
script.sh:
CONFIG_VAR="$(python-c 'import config;print(config.CONFIG_VAR)')"
CONFIG_VAR2="$(python-c 'import config;print(config.CONFIG_VAR2)')"
さらに、これは、Gillesの回答が要求するように「PythonでBashの「ソース」をエミュレートする」ことを試みるよりもはるかに読みやすくなっています。