Err*_*rse 4 python labview python-3.x
TLDR:我正在为 LabVIEW 使用的东西制作一个 python 包装器,我想将一个dict(甚至 kwargs)[即键/值对]传递给一个 python 脚本,这样我就可以有更多的动态函数参数。
LabVIEW 2018 实现了一个Python 节点,它允许 LabVIEW 通过调用、传递和获取返回的变量与 Python 脚本进行交互。
问题是它似乎没有对dict类型的本机支持:
Python 节点详细信息支持的数据类型
Python 节点支持大量数据类型。您可以使用此节点调用以下数据类型:
数字数组,包括多维数组字符串簇调用约定
该节点将整数和字符串转换为 Python 中的相应数据类型,将数组转换为列表,将簇转换为元组。
当然,python 是围绕字典构建的,但 LabVIEW 似乎不支持以任何方式传递字典对象。
有谁知道我可以将一组命名元素(或任何其他字典类型)作为dict对象传递给 python 脚本的方法吗?
没有直接的方法可以做到这一点。
双方最简单的方法是使用 JSON 字符串。
LabVIEW Clusters 可以扁平化为 JSON(字符串 > 扁平化/取消扁平化):
生成的字符串可以在一行(加上一个import)python 中转换为 dict :
>>> import json
>>> myDict=json.loads('{"MyString":"FooBar","MySubCluster":{"MyInt":42,"MyFloat":3.1410000000000000142},"myIntArray":[1,2,3]}')
>>> myDict
{u'MyString': u'FooBar', u'MySubCluster': {u'MyInt': 42, u'MyFloat': 3.141}, u'myIntArray': [1, 2, 3]}
>>> myDict['MySubCluster']['MyFloat']
3.141
Run Code Online (Sandbox Code Playgroud)
Python 方面又简单了:
>>> MyJson = json.dumps(myDict)
Run Code Online (Sandbox Code Playgroud)
在 LabVIEW 中,从字符串中解压 JSON,并使用默认值连接预期结构的簇:
这当然要求字典的结构是固定的。如果不是,您仍然可以通过将路径作为数组提供给单个元素来访问它们:
虽然这很有效(您是否注意到我的语言环境使用逗号作为小数点符号?),但并非所有数据类型都受支持。例如,JSON 本身没有时间数据类型,也没有专用的路径数据类型,因此 JSON VI 拒绝处理它们。使用数字或字符串数据类型,并在 LabVIEW 中进行转换。
如果您在 LabVIEW 中需要动态数据类型,请查看变体的属性。这些是成对的键(字符串)和值(任何数据类型!),它们可以像在 Python 中一样简单地添加和读取。但是没有(内置的,简单的)方法可以使用它与 Python 交换数据。
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |