stream - 使用 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 方法的正确对象是什么?
解决方案
我知道这是一个迟到的答复,但是您是否尝试过导入一个从 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 参数,这可能需要额外的导入。