Python 使用 os.getenv 时去除引号
Python strips quotation marks when using os.getenv
我在处理不同的字符串数组时遇到困难。以前,只有属性文件中有字符串数组。目前,系统在属性文件中有字符串数组,并在用户的 .bashrc 文件中设置为环境变量。属性和 .bashrc 文件中的字符串数组如下所示。
STRING_ARRAY="host1","host2","host3"
以前,有一对简单的 for 循环读取一系列这些字符串数组并将它们传递给某个函数。
for k in ("STRING_ARRAY","SOME_OTHER_ARRAY"):
globals()[k] = globals()[k].replace("\"",'').split(",")
for stringarray,otherarray in zip(STRING_ARRAY, SOME_OTHER_ARRAY):
someFunction(stringarray,otherarray)
这很好用。当某些变量从传递到 python 脚本和环境变量的属性文件中移出时,问题就出现了ose。似乎当使用 os.getenv("HOSTSTRINGARRAY") 或 os.environ["HOSTSTRINGARRAY"] 时,os 库 returns 没有字符串数组附带的引号 so
PROPERTIES_STRING_ARRAY="host1","host2","host3"
print PROPERTIES_STRING_ARRAY
returns
"host1","host2","host3"
而
ENV_VAR_STRING_ARRAY="host1","host2","host3"
print os.getenv("ENV_VAR_STRING_ARRAY")
returns
host1,host2,host3
这是个问题,因为我似乎无法按如下方式混合和匹配这两种类型的变量
for k in ("POPERTIES_STRING_ARRAY",os.getenv("ENV_VAR_OTHER_ARRAY")):
globals()[k] = globals()[k].replace("\"",'').split(",")
for stringarray,otherarray in zip(STRING_ARRAY, os.getenv("ENV_VAR_OTHER_ARRAY")):
someFunction(stringarray,otherarray)
所以我的问题是,如何将 os.getenv 或 os.environ 转换为 return 逗号分隔的字符串列表而不去除引号 enclosing单个字符串?
使用'
单引号声明字符串。它现在应该可以工作了。
ENV_VAR_STRING_ARRAY='"host1","host2","host3"'
我在处理不同的字符串数组时遇到困难。以前,只有属性文件中有字符串数组。目前,系统在属性文件中有字符串数组,并在用户的 .bashrc 文件中设置为环境变量。属性和 .bashrc 文件中的字符串数组如下所示。
STRING_ARRAY="host1","host2","host3"
以前,有一对简单的 for 循环读取一系列这些字符串数组并将它们传递给某个函数。
for k in ("STRING_ARRAY","SOME_OTHER_ARRAY"):
globals()[k] = globals()[k].replace("\"",'').split(",")
for stringarray,otherarray in zip(STRING_ARRAY, SOME_OTHER_ARRAY):
someFunction(stringarray,otherarray)
这很好用。当某些变量从传递到 python 脚本和环境变量的属性文件中移出时,问题就出现了ose。似乎当使用 os.getenv("HOSTSTRINGARRAY") 或 os.environ["HOSTSTRINGARRAY"] 时,os 库 returns 没有字符串数组附带的引号 so
PROPERTIES_STRING_ARRAY="host1","host2","host3"
print PROPERTIES_STRING_ARRAY
returns
"host1","host2","host3"
而
ENV_VAR_STRING_ARRAY="host1","host2","host3"
print os.getenv("ENV_VAR_STRING_ARRAY")
returns
host1,host2,host3
这是个问题,因为我似乎无法按如下方式混合和匹配这两种类型的变量
for k in ("POPERTIES_STRING_ARRAY",os.getenv("ENV_VAR_OTHER_ARRAY")):
globals()[k] = globals()[k].replace("\"",'').split(",")
for stringarray,otherarray in zip(STRING_ARRAY, os.getenv("ENV_VAR_OTHER_ARRAY")):
someFunction(stringarray,otherarray)
所以我的问题是,如何将 os.getenv 或 os.environ 转换为 return 逗号分隔的字符串列表而不去除引号 enclosing单个字符串?
使用'
单引号声明字符串。它现在应该可以工作了。
ENV_VAR_STRING_ARRAY='"host1","host2","host3"'