我必须在 python 中读取一个使用MicrosoftVARIANT
的文件(我认为 - 我真的不太了解 Microsoft 代码:S)。基本上我想知道是否有 python 包可以为我做这件事。
解释一下 - 我试图读取的文件只是一堆{ 2-byte integer, <data> }
一遍又一遍地重复,其中 2 字节整数指定了它<data>
是什么。
2 字节整数对应于 VARIANT: VT_I2
、VT_I4
等中的 Microsoft 数据类型,并且基于类型,我可以编写代码来读取并强制<data>
转换为适当的 Python 对象。
我目前的尝试如下:
while dtype = file.read(2):
value = None
# translate dtype (I've put in VT_XX myself to match up with Microsoft)
if dtype == VT_I2:
value = file.read(2)
elif dtype == VT_I4:
value = file.read(4)
# ... and so on for other types
# append value to the list of values
# return the values we read
return values
问题是,我无法弄清楚如何将一些字节转换为适当的 Python 对象(例如VT_BSTR
, VT_DECIMAL
, VT_DATE
)。但是,在我进一步尝试之前,我想知道是否有任何现有的 python 包可以为我执行此逻辑(即接收文件对象/字节并将其解析为一组 python 对象,它们是浮点数、整数、日期,字符串,...)。
这似乎是一件相当普遍的事情。但是,我一直很难寻找包来做这件事,因为我对 Microsoft 代码一无所知,我没有术语来进行适当的谷歌搜索。(如果相关,我正在运行 LINUX)。