0

我必须在 python 中读取一个使用MicrosoftVARIANT的文件(我认为 - 我真的不太了解 Microsoft 代码:S)。基本上我想知道是否有 python 包可以为我做这件事。

解释一下 - 我试图读取的文件只是一堆{ 2-byte integer, <data> }一遍又一遍地重复,其中 2 字节整数指定了它<data>是什么。

2 字节整数对应于 VARIANT: VT_I2VT_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)。

4

1 回答 1

0

pywin32中的 win32com 包将为您完成此任务。文档很平淡,但是有很多 variant.html 包括解释基本用法和很多在线教程和参考资料。

于 2012-07-30T02:42:13.037 回答