我正在使用PuppetDb python library。如果它存在,我想打印一个事实的值。
for group in groups:
node = puppetdb.node(group[0])
if hasattr(node.facts, 'custom_fact'):
print node.fact('custom_fact')
我对python来说比较新,但是我读了here上面的方法应该允许我检查对象是否有属性。
不确定我是否误解了说明或者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)
寻找不会返回任何内容的属性,这让我相信这不是一个普通的对象。
答案 0 :(得分:0)
我发现使用try/except
效果更好:
for group in groups:
print group[0]
node = puppetdb.node(group[0])
try:
print node.fact('custom_fact').value
except:
pass