繁体   English   中英

使用os.getenv时Python去除引号

[英]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脚本和环境变量的属性文件中移出时,出现了问题。 似乎在使用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返回以逗号分隔的字符串列表,而又不去除引号引起来的单个字符串?

使用'单引号声明字符串。 现在应该可以工作了。

ENV_VAR_STRING_ARRAY='"host1","host2","host3"'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM