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"'