You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python noteslib从Notes视图打开文档并获取数据?

在Python中获取HCL Notes文档的完整数据(替代客户端双击打开操作)

你用noteslib连接Notes数据库并遍历视图的代码没问题,不需要调用doc.Open()——这个方法是LotusScript里用于客户端打开文档窗口的,在Python的noteslib中并不适用,而且通过视图获取的doc对象本身已经可以直接访问所有字段数据。

直接用以下方式获取文档数据:

1. 获取单个指定字段的值

使用GetItemValue("字段名称")方法,注意返回的是列表类型(因为Notes字段支持多值),如果是单值字段,取列表第一个元素即可:

# 示例:获取主题字段值
if doc.HasItem("Subject"):
    subject = doc.GetItemValue("Subject")[0]
else:
    subject = "无主题"

2. 获取文档所有字段的完整数据

遍历doc.Items集合,每个Item对象包含Name(字段名)和Value(字段值)属性,还可以过滤掉系统自动生成的$开头字段:

修改后的完整代码

import noteslib
db = noteslib.Database('my-domino-server','my-db.nsf', 'mypassword')
view = db.GetView('my_view')
doc = view.GetFirstDocument()
while doc:
    print(doc.ColumnValues)
    
    # 获取单个字段示例
    subject = doc.GetItemValue("Subject")[0] if doc.HasItem("Subject") else "无主题"
    print(f"当前文档主题: {subject}")
    
    # 收集所有非系统字段数据到字典
    full_doc_data = {}
    for item in doc.Items:
        # 跳过$开头的系统字段(可选操作)
        if not item.Name.startswith('$'):
            full_doc_data[item.Name] = item.Value
    print("文档完整数据:", full_doc_data)
    
    doc = view.GetNextDocument(doc)

关键说明

  • HasItem("字段名")用于判断文档是否包含目标字段,避免因字段不存在导致的索引错误
  • doc.Items包含文档所有字段,包括系统字段(如$Created、$UpdatedBy),按需选择是否保留
  • 视图返回的文档对象已经是激活状态,无需额外"打开"操作即可读取数据

内容的提问来源于stack exchange,提问作者Looz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:45:29