我正在使用PuppetDb python库。如果一个事实存在,我想打印它的值。
for group in groups:
node = puppetdb.node(group[0])
if hasattr(node.facts, 'custom_fact'):
print node.fact('custom_fact')我对python比较陌生,但是我读了这里,上面的方法应该允许我检查对象是否有属性。
不确定我是否误解了指令,或者PuppetDb对象的行为是否不同。
只有当custom_fact存在时,我才能打印它?
编辑:当我使用print node.facts时,它说node.facts是一个绑定方法。因此,我也在尝试这样做(使用osfamily事实,因为它应该总是返回某些内容):
for group in groups:
node = puppetdb.node(group[0])
facts = node.facts()
print facts
if hasattr(facts, 'osfamily'):
print facts('osfamily')print facts返回<generator object facts at 0x7f906ffe35f0>
print node.facts('custom_fact')从不运行。
同时,尝试dir(facts)寻找不返回任何东西的属性,这使我相信这不是一个正常的对象。
发布于 2017-05-15 19:40:43
我发现使用try/except更好:
for group in groups:
print group[0]
node = puppetdb.node(group[0])
try:
print node.fact('custom_fact').value
except:
passhttps://stackoverflow.com/questions/43986987
复制相似问题