Python2.6与rundeckrun的兼容性

2024-04-27 05:43:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,在编写一段代码时有点吃力。我正在使用rundeckrun,这是一个用于rundeckapi的开源python客户端。客户机中有一段代码似乎被锁定在Python2.7+上,我真的需要让它在Python2.6上运行。我试过搜索,但都不知道这个结构叫什么,所以很难找到2.6的等价物。在

node_attr_keys = (
        'name',
        'hostname',
        'username',
        'description',
        'osArch',
        'osFamily',
        'osName',
        'editUrl',
        'remoteUrl',
    )

    data = {k: getattr(self, k)
            for k in node_attr_keys if getattr(self, k, None) is not None}

具体错误是:

runpydeck2.0/run-pythor/11/run-pydeck文件包/客户端.py“,第21行,英寸 从.api导入RundeckApi Tolerative,RundeckApi,RundeckNode 文件“/usr/lib/python2.6/site-packages/rundeckrun-0.1.11-py2.6.egg/rundeck/api.py文件“,第135行 如果getattr(self,k,None)不是None} ^ 语法错误:语法无效


Tags: 文件run代码pyselfnoneapinode
3条回答

那是对字典的理解。Python2.6不支持它们。您提供的代码大致相当于以下代码:

node_attr_keys = (
 # Same as your code, omitted for brevity
)
data = {}
for k in node_attr_keys:
    if getattr(self, k, None) is not None:
        data[k] = getattr(self, k)

除了这个错误,人们可能会因为同样的原因得到以下错误。在

File "/usr/lib/python2.6/site-packages/rundeck/transforms.py", line 256
_transforms = {obj_key: obj_val for obj_key, obj_val in locals().items() if hasattr(obj_val, '__is_transform__')}
                                  ^

语法错误:语法无效

^{pr2}$

语法错误:语法无效

File "/usr/lib/python2.6/site-packages/rundeck/util.py", line 36
return {k: v for k, v in el.items()}
               ^

语法错误:语法无效

File "/usr/lib/python2.6/site-packages/rundeck/util.py", line 58
return {k: kwargs.pop(k) for k in api_keys if k in kwargs}

你可能得用金德尔给你的一样的方法。只需分别修改以下文件。在

_transforms = dict((obj_key, obj_val) for obj_key, obj_val in locals().items() if hasattr(obj_val, '__is_transform__'))
 return dict((c.tag, c.text) for c in el)
return dict((k, v) for k, v in el.items())
return dict((k, kwargs.pop(k)) for k in api_keys if k in kwargs)

功劳归于金德。在

正如凯文指出的,这是对字典的理解。在

在Python2.6中,可以将其编写为生成元组(键/值对)列表的生成器表达式,并将其传递给dict构造函数:

data = dict((k, getattr(self, k))
             for k in node_attr_keys if getattr(self, k, None) is not None)

相关问题 更多 >