【发布时间】:2016-06-14 14:05:58
【问题描述】:
我在使用不同的字符串数组时遇到了困难。以前,只有属性文件中才有字符串数组。目前,系统在属性文件中有字符串数组,并在用户的.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 脚本和环境变量中的属性文件中移出时,问题就出现了。似乎在使用 os.getenv("HOSTSTRINGARRAY") 或 os.environ["HOSTSTRINGARRAY"] 时,os 库会返回不带引号的字符串数组,所以
PROPERTIES_STRING_ARRAY="host1","host2","host3"
print PROPERTIES_STRING_ARRAY
返回
"host1","host2","host3"
而
ENV_VAR_STRING_ARRAY="host1","host2","host3"
print os.getenv("ENV_VAR_STRING_ARRAY")
返回
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 返回一个逗号分隔的字符串列表,而不去掉包含单个字符串的引号?
【问题讨论】:
标签: python arrays string environment-variables