如何用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
相关产品推荐
相关产品推荐

