Python在使用os.getenv时会去掉引号
我在使用不同的字符串数组时遇到困难。以前,只有在属性文件中才有字符串数组。目前,系统在属性文件中有字符串数组,并在用户的.bashrc文件中设置为环境变量。在属性和.bashrc文件中,字符串数组如下所示Python在使用os.getenv时会去掉引号,python,arrays,string,environment-variables,Python,Arrays,String,Environment Variables,我在使用不同的字符串数组时遇到困难。以前,只有在属性文件中才有字符串数组。目前,系统在属性文件中有字符串数组,并在用户的.bashrc文件中设置为环境变量。在属性和.bashrc文件中,字符串数组如下所示 STRING_ARRAY="host1","host2","host3" 以前,有一对简单的for循环,用于读取一系列字符串数组并将它们传递到某个函数中 for k in ("STRING_ARRAY","SOME_OTHER_ARRAY"): globals()[k] = globa
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脚本和环境变量的属性文件中移出时,就会出现问题。似乎在使用os.getenv(“HOSTSTRINGARRAY”)或os.environ[“HOSTSTRINGARRAY”]时,os库会返回字符串数组,但不带引号
PROPERTIES_STRING_ARRAY="host1","host2","host3"
print PROPERTIES_STRING_ARRAY
返回
"host1","host2","host3"
host1,host2,host3
鉴于
ENV_VAR_STRING_ARRAY="host1","host2","host3"
print os.getenv("ENV_VAR_STRING_ARRAY")
返回
"host1","host2","host3"
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返回一个逗号分隔的字符串列表,而不去掉包含单个字符串的引号?使用
'
单引号来声明字符串。现在应该可以了
ENV_VAR_STRING_ARRAY='"host1","host2","host3"'
这确实解决了单个变量返回方式的问题,但是,我得到的错误仍然没有消失。事实证明,我的错误的最终来源是环境变量实际上不是全局的,所以我的拆分函数在全局查找它们时出错了。不过,这确实回答了我的具体问题,所以我将接受答案。