首页 > 解决方案 > 使用 pythonnet 将流传递给 .net DLL

问题描述

我正在使用 .NET DLL 文件处理器,但似乎无法让流传递工作。我有以下相关方法。

EmbedFile(string): bool
EmbedFile(Stream): bool

使用字符串版本时,它在给定文件名时按预期工作。

encoder.EmbedFile("test.dat")

但是,我不确定将什么传递给流版本。我已经尝试过 io.BytesIO 和文件句柄,但都给了我以下内容。

TypeError: No method matches given arguments for EmbedFile

传递给采用 Stream 参数的 .NET 方法的正确对象是什么?

标签: streampython.net

解决方案


我知道这是一个迟到的答复,但是您是否尝试过导入一个从 Stream 继承的 .NET 类,然后在 Python 中构造一个实例。

import clr
from System import File
from System.IO import FileStream

def main():   
    path = "path\\to\\file.dat"

    clrFile = File(path)

    clrFileStream = FileStream(clrFile)

    returnValue = EmbedFile(clrFileStream)

注意:如果派生 Stream 的构造函数中存在更多 .NET 参数,这可能需要额外的导入。


推荐阅读