我有一个包含Excel文档数据的BytesIO
对象。我想要使用的库不支持BytesIO
,而是需要一个文件对象。我该如何将我的BytesIO
对象转换成一个文件对象?
我有一个包含Excel文档数据的BytesIO
对象。我想要使用的库不支持BytesIO
,而是需要一个文件对象。我该如何将我的BytesIO
对象转换成一个文件对象?
# 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())
如果您提供了处理Excel文件的库,那将会非常有帮助。但是基于我做出的一些假设,以下是一些解决方案:
.
import io
b = io.BytesIO(b"Hello World") ## Some random BytesIO Object
print(type(b)) ## For sanity's sake
with open("test.xlsx") as f: ## Excel File
print(type(f)) ## Open file is TextIOWrapper
bw=io.TextIOWrapper(b) ## Conversion to TextIOWrapper
print(type(bw)) ## Just to confirm
.
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
我希望这些建议中的一个能够解决您的问题。
read()
不会返回你想要的内容。不确定这个答案曾经是否正确,但现在你确实需要使用 getbuffer()
。 - Ibrahimpathlib.Path('file').write_bytes(io.BytesIO(b'data').getbuffer())
getbuffer()
返回一个 Memoryview。write()
需要 bytes。有什么建议可以抑制这个警告吗?代码可以正常工作,但是还有一些小问题。 - Jari TurkiaPython 3.10:
pathlib.Path('temp_file_name.tmp') \
.write_bytes(io.BytesIO(b'data') \
.getbuffer() \
.tobytes())
fileno
属性的某些内容? - Mad Physicist