我在同一个文件夹中有 python 脚本和 shell 脚本,它们都需要配置。我目前有一个 config.py 用于我的 python 脚本,但我想知道是否可以有一个配置文件,它可以被 python 脚本和 shell 脚本轻松读取。
谁能举一个最适合python和shell读取的配置文件格式的例子。
我在同一个文件夹中有 python 脚本和 shell 脚本,它们都需要配置。我目前有一个 config.py 用于我的 python 脚本,但我想知道是否可以有一个配置文件,它可以被 python 脚本和 shell 脚本轻松读取。
谁能举一个最适合python和shell读取的配置文件格式的例子。
我认为最简单的解决方案是:
key1="value1"
key2="value2"
key3="value3"
在shell中,你只需要获取这个 env 文件,在 Python 中,它很容易解析。
周围不允许有空格=
对于 Python,请参阅这篇文章:Emulating Bash 'source' in Python
configobj lib 可以帮助解决这个问题。
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']
这在 shell 和 python 中都有效:
NUMBER=42
STRING="Hello there"
你还需要什么?
保留“config.py”而不是“config.sh”会导致一些漂亮的代码。
配置文件
CONFIG_VAR = "value"
CONFIG_VAR2 = "value2"
脚本.py:
import config
CONFIG_VAR = config.CONFIG_VAR
CONFIG_VAR2 = config.CONFIG_VAR2
脚本.sh:
CONFIG_VAR="$(python-c 'import config;print(config.CONFIG_VAR)')"
CONFIG_VAR2="$(python-c 'import config;print(config.CONFIG_VAR2)')"
另外,这比尝试像 Gilles 回答所要求的那样“在 Python 中模拟 Bash '源'”要清晰得多。