【问题标题】:Python strips quotation marks when using os.getenvPython 在使用 os.getenv 时去掉引号
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 这确实解决了返回单个变量方式的问题,但是,我得到的错误仍然没有消失。事实证明,我的错误的最终来源是环境变量实际上不是全局的,所以我的拆分函数在全局查找它们时出错了。不过,这确实回答了我的具体问题,所以我将接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2013-07-06
    • 2023-03-06
    • 2014-04-07
    • 2019-04-23
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多