我当前正在使用一个使用open(filename)
加载文件的库。
我不想弄乱文件系统,所以我尝试使用BytesIO
在内存中下载此文件:
obj = BytesIO(requests(url).content)
但是,如果我将obj
传递给库,则会收到错误消息。
如何转换对象,使其可以被open(object)
“打开”?
答案 0 :(得分:2)
如果自变量是类似文件的对象(如果具有open
属性,则可以识别),您可以重写内置的read
函数以直接返回第一个自变量:>
import builtins
original_open = open
builtins.open = lambda f, *args, **kwargs: f if hasattr(f, 'read') else original_open(f, *args, **kwargs)
这样:
from io import BytesIO
print(open(BytesIO(b'hello world'), 'rb').read())
输出:
b'hello world'
答案 1 :(得分:-1)
除非要将其另存为文件,否则不能这样做,因为open()
方法只能用于文件系统中包含的文件。相反,您可以查看io流上的python文档(位于https://docs.python.org/3/library/io.html),并了解如何通过io方法访问数据。