我有一个文件,想把它转换成BytesIO
对象,以便它可以存储在数据库的varbinary列中。
请谁能帮我使用python转换它。
下面是我的代码:
f = open(filepath, "rb")
print(f.read())
myBytesIO = io.BytesIO(f)
myBytesIO.seek(0)
print(type(myBytesIO))
使用open
和模式读取二进制打开文件已经为您提供了一个二进制 I/O 对象。
文档:
创建二进制流的最简单方法是在模式字符串中使用带有"b"的 open((:
f = open("myfile.jpg", "rb")
因此,在正常情况下,只需将文件句柄传递到需要提供它的任何位置即可。如果您确实想要/需要获取BytesIO
实例,只需在创建BytesIO
实例时传递从文件中读取的字节,如下所示:
from io import BytesIO
with open(filepath, "rb") as fh:
buf = BytesIO(fh.read())
这样做的缺点是将整个文件加载到内存中,如果要将实例传递到的代码足够智能,可以在不将其保留在内存中的情况式传输文件,则可以避免这种情况。请注意,该示例使用open
作为上下文管理器,即使在出现错误的情况下,该管理器也能可靠地关闭文件。