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

use*_*127 12 python bytesio

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

请任何人都可以帮助我使用python转换它。

下面是我的代码:

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

myBytesIO = io.BytesIO(f)
myBytesIO.seek(0)
print(type(myBytesIO))
Run Code Online (Sandbox Code Playgroud)

小智 28

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

文件

创建二进制流的最简单方法是在模式字符串中使用 open() 和 'b':

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

因此,在正常情况下,您只需将文件句柄传递到您需要提供的任何位置即可。如果您真的想要/需要获取一个BytesIO实例,只需在创建BytesIO实例时传递您从文件中读取的字节,如下所示:

with open(filepath, 'rb') as fh:
    buf = BytesIO(fh.read())
Run Code Online (Sandbox Code Playgroud)

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