使用 python 将文件转换为 BytesIO 对象

Convert file into BytesIO object using python

我有一个文件,想将它转换成 BytesIO 对象,以便它可以存储在数据库的 varbinary 列中。

谁能帮我用python转换一下。

下面是我的代码:

f = open(filepath, "rb")
print(f.read())

myBytesIO = io.BytesIO(f)
myBytesIO.seek(0)
print(type(myBytesIO))

使用 open 和 read-binary 模式打开文件已经为您提供了二进制 I/O 对象。

Documentation:

The easiest way to create a binary stream is with open() with 'b' in the mode string:

f = open("myfile.jpg", "rb")

所以在正常情况下,只要将文件句柄传递到需要提供的地方就可以了。如果你 真的 want/need 得到一个 BytesIO 实例,只需在创建 BytesIO 实例时传递你从文件中读取的字节,就像这样:

with open(filepath, 'rb') as fh:
    buf = BytesIO(fh.read())

这有将整个文件加载到内存中的缺点,如果您将实例传递到的代码足够智能,可以流式传输文件而不将其保存在内存中,这可能是可以避免的。请注意,该示例使用 open 作为 context manager,即使在出现错误的情况下也能可靠地关闭文件。