我正在尝试阅读流式xlsx文件。用户通过用户界面输入数据,然后通过xlsx中的流传输数据。我怎么看?我找不到任何文件。
cat text.xlsx | python myprogram.py
我如何阅读此流?任何帮助,将不胜感激。我不确定openpyxl是否允许这种读取。我正在使用python3
答案 0 :(得分:1)
openpyxl.load_workbook
的第一个参数filename
不仅可以是文件名,还可以是类似文件的对象,而sys.stdin
是表示程序stdin的类文件对象。< / p>
您需要它以二进制模式,请参阅有关二进制标准流的文档中的注释。
import sys
from openpyxl import load_workbook
wb = load_workbook(sys.stdin.buffer)
print(wb.sheetnames)
执行命令
$ cat test.xlsx | python test.py
['Sheet1', 'Sheet2']
答案 1 :(得分:0)
我没有足够的代表发表评论,因此我将此作为答案发布。
正如@CheradenineZK 提到的,如果输入来自(Azure)blob 存储,则需要将其包装在字节缓冲区中。我一直在努力弄清楚如何做到这一点......
import io
import openpyxl
bytes_in = io.BytesIO(myblob.read())
wb = openpyxl.load_workbook(bytes_in)
正在为我做伎俩。