PuppetDb Python脚本是否获取事实(如果存在)?

PuppetDb Python脚本是否获取事实(如果存在)?,python,puppet,Python,Puppet,我在用电话。如果事实存在,我想打印它的值 for group in groups: node = puppetdb.node(group[0]) if hasattr(node.facts, 'custom_fact'): print node.fact('custom_fact') 我对python比较陌生,但我读到上面的方法应该允许我检查对象是否有属性 不确定我是否误解了说明,或者PuppetDb对象的行为是否不同 如何仅在存在的情况下打印custom\u fact 编辑

我在用电话。如果事实存在,我想打印它的值

for group in groups:
  node = puppetdb.node(group[0])
  if hasattr(node.facts, 'custom_fact'):
    print node.fact('custom_fact')
我对python比较陌生,但我读到上面的方法应该允许我检查对象是否有属性

不确定我是否误解了说明,或者PuppetDb对象的行为是否不同

如何仅在存在的情况下打印
custom\u fact


编辑:当我使用
print node.facts
时,它表示
node.facts
是一个绑定方法。 所以我也在尝试这个(使用
osfamily
fact,因为它应该总是返回一些东西):

打印事实
返回

打印节点。事实(“自定义事实”)
永远不会运行


还尝试
dir(facts)
查找不返回任何内容的属性,这让我相信这不是一个正常的对象。

我发现使用
try/except
效果更好:

for group in groups:
  print group[0]
  node = puppetdb.node(group[0])
  try:
    print node.fact('custom_fact').value
  except:
    pass
for group in groups:
  print group[0]
  node = puppetdb.node(group[0])
  try:
    print node.fact('custom_fact').value
  except:
    pass