如何在python中打开已经打开的文件?

时间:2019-07-25 20:13:52

标签: python python-3.x

我当前正在使用一个使用open(filename)加载文件的库。

我不想弄乱文件系统,所以我尝试使用BytesIO在内存中下载此文件:

obj = BytesIO(requests(url).content)

但是,如果我将obj传递给库,则会收到错误消息。

如何转换对象,使其可以被open(object)“打开”?

2 个答案:

答案 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方法访问数据。