Python 3.x 如何覆盖django settings.py文件的os.environ.get()
我正在使用一些环境变量。我可以通过Python 3.x 如何覆盖django settings.py文件的os.environ.get(),python-3.x,Python 3.x,我正在使用一些环境变量。我可以通过os.environ.get(“somekey”,None)获得它们。如果环境变量中的一行有一个我放在前面的标志,我想应用一些逻辑 env中的示例行: FILE_PASS=password FILE_NAME=examplefile #CHECK 在settings.py中: file_pass = os.environ.get("FILE_PASS", "") file_name = os.environ.get(&q
os.environ.get(“somekey”,None)
获得它们。如果环境变量中的一行有一个我放在前面的标志,我想应用一些逻辑
env中的示例行:
FILE_PASS=password
FILE_NAME=examplefile #CHECK
在settings.py中:
file_pass = os.environ.get("FILE_PASS", "")
file_name = os.environ.get("FILE_NAME","default_file")
我不想写my_custom_env()
,因为我希望每个人都在我的逻辑后面使用os.environ.get函数
我该怎么做?
编辑:这叫猴子补丁吗?
我想我想要的是这样的东西
import os
def new_os_environ(key, default=''):
env = os.environ
line = env.get(key, default)
if "#CHECK" in line:
#do some stuff
return line
os.environ.get = new_os
os.environ.get("FILE_NAME","heey")
这:
将不起作用,因为#CHECK
将被视为注释,并且不会与env.get
命令一起显示
我想您可以逐行读取该文件,但更好的方法是在env文件中添加一个新变量。大致如下:
CHECK=TRUE
然后,您可以专门检查该值是否存在,并相应地编码
check = os.environ.get("CHECK","FALSE")
if check == "TRUE":
# Do your stuff herre
如果要直接使用布尔值,请使用1和零。我更喜欢文本字符串TRUE和FALSE,因为我认为它们更突出,更清楚地表明你在做什么,但这只是个人偏好。恐怕我不太理解这个问题。“如果环境变量中的一行有一个我放在前面的标志,我想应用一些逻辑。”-这意味着什么,你能更具体地给出一个你想做什么的例子吗。你能检查编辑过的问题吗?你不会在这行中找到
#check
,因为它将在env
文件中作为注释处理。所以这种方法行不通。如果使用像这样的东西呢!检查
?我只是想用任何东西来标记行。我想你已经进入了“黑客”代码的领域——请看下面答案中的建议。我只是想用来标记行!选中
,例如仅编码标记行。在我的示例中,使用os.environ.get(“文件名”)
获取FILE\u NAME
,如果它被标记为!检查
假设将其编码为Base64,我的意思是我想询问有关向os.environ.get()函数添加行为的问题。您可以检索该行,然后根据输入的任何指标对其进行分析,但我建议不要使用这种方法。
check = os.environ.get("CHECK","FALSE")
if check == "TRUE":
# Do your stuff herre