首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在python代码中设置环境变量

如何在python代码中设置环境变量
EN

Stack Overflow用户
提问于 2018-08-07 03:32:53
回答 1查看 421关注 0票数 0

我最近开始用python编写代码。我正在尝试创建一个环境变量,并使用python将列表分配给它。因此,当我尝试通过命令行(如printenv )读取我的环境变量时,它将在那里列出。

这是我用编写的代码:

from API_CALLS import Post_Request as Request
import os

class VTM_Config:

    @staticmethod
    def validate_pool_nodes(url, headers, expected_num_of_active_nodes):
        try:
            print('\nNow Executing Validate VTM Configs...\n')
            # validate that vtm api works by sending a get_session_with_ssl call to the url
            vtm_get_session_response = Request.get_session_with_ssl(url=url, headers=headers)
            data = vtm_get_session_response
            active_nodes = [
                n['node']
                for n in data['properties']['basic']['nodes_table']
                if n['state'] == 'active'

            ]
            actual_num_of_active_nodes = len(active_nodes)
            if expected_num_of_active_nodes != actual_num_of_active_nodes:
                print("Number of Active Nodes = {}".format(actual_num_of_active_nodes))
                raise Exception("ERROR: You are expecting : {} nodes, but this pool contains {} nodes".format(
                    expected_num_of_active_nodes, actual_num_of_active_nodes))
            else:
                print("Number of Active Nodes = {}\n".format(actual_num_of_active_nodes))
            print("Active servers : {}\n".format(active_nodes))
            os.environ["ENABLED_POOL_NODES"] = active_nodes
            return os.environ["ENABLED_POOL_NODES"]

        except Exception as ex:
            raise ex

我正在尝试使用os.environ["ENABLED_POOL_NODES"] = active_nodes创建一个环境变量,并尝试返回它。

当我运行这段代码时,我得到如下错误: raise list (“type(value).name) expect,not %s%List TypeError: str expect,not list。

问:如何将list赋值给环境变量。

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 00:57:01

所以,这是一个简单的解决方案,感谢你们所有人。我最终只是返回字符串值并打印到控制台,在那里jenkins作业中的shell脚本将获得输出:

def validate_pool_nodes(url, headers, expected_num_of_active_nodes):
        try:
            print('\nNow Executing Validate VTM Configs...\n', file=sys.stderr)
            # validate that vtm api works by sending a get_session_with_ssl call to the url
            vtm_get_session_response = Request.get_session_with_ssl(url=url, headers=headers)
            data = vtm_get_session_response
            active_nodes = {
                n['node']
                for n in data['properties']['basic']['nodes_table']
                if n['state'] == 'active'
            }
            actual_num_of_active_nodes = len(active_nodes)
            if expected_num_of_active_nodes != actual_num_of_active_nodes:
                print("Number of Active Nodes = {}".format(actual_num_of_active_nodes), file=sys.stderr)
                raise Exception("ERROR: You are expecting : {} nodes, but this pool contains {} nodes".format(
                    expected_num_of_active_nodes, actual_num_of_active_nodes))
            else:
                print("Number of Active Nodes = {}\n".format(actual_num_of_active_nodes), file=sys.stderr)

            return str(active_nodes)

        except Exception as ex:
            raise ex

下面是python的"main“方法:

if __name__ == '__main__':
    arg1 = sys.argv[1]
    arg2 = int(sys.argv[2])
    run_prereq = Prerequisites()
    run_prereq.validate_login_redirect(pool_arg=arg1)
    nodes_list = run_prereq.validate_pool_nodes(pool_arg=arg1, num__of_nodes_arg=arg2)
    sys.stdout.write(nodes_list)
    sys.exit(0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51714499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档