使用参数替换将 bash 环境变量集读取到 Python 变量中



我的.env文件中有以下环境变量:

DT="2019-01-01"
X=${DT//-/}

变量X是使用 Bash 的参数替换设置的,使用 ${parameter//pattern/string} 格式替换所有出现的情况(此处的文档(。

现在,为了将环境变量读入 Python 中,我在文件config.py中创建了一个 Python 类Config

from dotenv import find_dotenv, load_dotenv
import os
class Config:
    def __init__(self):
        load_dotenv(find_dotenv())
        self.X = os.environ.get('X')

在一个python壳中,我运行:

In [1]: from config import Config
In [2]: c = Config()
In [3]: c.X
Out[3]: ''

这里c.X是一个空字符串'',我希望它'20190101'

如何将环境变量的正确值加载到 python 变量中?

编辑:当我在bash脚本中键入echo $X时,它会打印正确的值。例如,bash 脚本sample.sh

#!/bin/bash
source .env
echo $X

运行时,我得到:

$ sh sample.sh
20190101

我以这种方式在.env文件中添加了export

DT="2019-01-01"
export X=${DT//-/}

这使我能够在Python中获得正确的c.X值。

Dotenv 不使用 Bash;它在内部解析文件。请参阅 dotenv GitHub 页面。

直接使用 DT 代替:

self.X = os.environ.get('DT').replace('-', '')

最新更新