Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字节转换为文件_Python - Fatal编程技术网

Python 将字节转换为文件

Python 将字节转换为文件,python,Python,我有一个包含excel文档数据的BytesIO对象。我要使用的库不支持BytesIO,需要一个File对象。如何将我的BytesIO对象转换为文件对象?如果您提供了用于处理excel文件的库,这会很有帮助,但根据我的一些假设,这里有一些解决方案: 基于文章的第一段,听起来所有的具体类——包括BytesIO——都是。在不知道您迄今为止尝试了哪些代码的情况下,我不知道您是否尝试过将BytesIO传递给您正在使用的模块 如果这种情况不起作用,您只需将BytesIO传递给构造函数,即可将其转换为另一个

我有一个包含excel文档数据的BytesIO对象。我要使用的库不支持BytesIO,需要一个File对象。如何将我的BytesIO对象转换为文件对象?

如果您提供了用于处理excel文件的库,这会很有帮助,但根据我的一些假设,这里有一些解决方案:

  • 基于文章的第一段,听起来所有的具体类——包括BytesIO——都是。在不知道您迄今为止尝试了哪些代码的情况下,我不知道您是否尝试过将BytesIO传递给您正在使用的模块
  • 如果这种情况不起作用,您只需将BytesIO传递给构造函数,即可将其转换为另一个io编写器/读取器/包装器。例如:

  • 您可能需要检查用于将BytesIO转换为正确的BytesIO的模块需要哪种读写器/包装器
  • 我相信我听说过(由于内存原因,由于excel文件非常大),excel模块不会加载整个文件。如果这意味着您需要的是磁盘上的物理文件,那么您可以轻松地临时编写Excel文件,并在完成后将其删除。例如:


我希望其中一点能解决您的问题。

可能的XY问题。你到底想做什么。例如,您是否需要支持
fileno
属性的东西?read()在BytesIO上不起作用。它发送垃圾。用户getbuffer()。
# Create an example
from io import BytesIO
bytesio_object = BytesIO(b"Hello World!")

# Write the stuff
with open("output.txt", "wb") as f:
    f.write(bytesio_object.getbuffer())
import io
import os

with open("test.xlsx",'rb') as f:
    g=io.BytesIO(f.read())   ## Getting an Excel File represented as a BytesIO Object
temporarylocation="testout.xlsx"
with open(temporarylocation,'wb') as out: ## Open temporary file as bytes
    out.write(g.read())                ## Read bytes into file

## Do stuff with module/file
os.remove(temporarylocation) ## Delete file when done
# Create an example
from io import BytesIO
bytesio_object = BytesIO(b"Hello World!")

# Write the stuff
with open("output.txt", "wb") as f:
    f.write(bytesio_object.getbuffer())
pathlib.Path('file').write_bytes(io.BytesIO(b'data').getbuffer())