gpt4 book ai didi

python - 如何使用 Python (pytwist) 获取 CSV 输出中字段的内容而不是 `
转载 作者:太空宇宙 更新时间:2023-11-03 19:38:02 25 4
gpt4 key购买 nike

下面的代码片段生成“奇怪”的输出:

for s in servers:
vo = ss.getServerVO(s)
values = []
for f in voFields:
attribValue = getattr(vo, f)
values.append(attribValue)
customValues = ss.getCustomFields(s)
for f in customFields:
values.append(customValues[f])
# Convert all values to string before writing
values = map(str, values)
csvFile.writerow( values )

对于 customFields 字典中的一些(不是全部)项目,我得到以下输出:

<bound method ServerVO.getCreatedDate of <pytwist.com.opsware.server.ServerVO instance at 0x3da8680>>

我需要做什么才能让绑定(bind)方法执行/将其结果放入我的 values 字典中?

(具体上下文是针对 HP Server Automation API 编写 PyTwist 脚本)

最佳答案

如果绑定(bind)方法是一个,您可以尝试调用它:

for f, v in customFields.iteritems():
try:
v = v()
except TypeError:
pass
values.append(v)

当然,问题在于设计选择(由 HP 或任何人)将“访问器”与其他类型的值混合在一起 - 访问器不是一个好的 Pythonic 选择,应该用属性替换(其中“调用“在需要时为您自动化)。这个建议是关于解决这个糟糕的设计选择的可能方法。

只是尝试调用,并检查如果值不可调用(或不带参数不可调用)可能导致的 TypeError 比使用 callable 或检查 __call__ 特殊方法,因为这些检查永远不会告诉您“不带参数调用”是否可以。因此,像 Python 中通常那样,“最好通过许可请求宽恕”:尝试操作,捕获可能的错误(“请求宽恕”)——而不是在尝试之前尝试检查操作是否允许(“请求许可”) )。

关于python - 如何使用 Python (pytwist) 获取 CSV 输出中字段的内容而不是 `<bound method...`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389025/

25 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com