首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用io流接受Excel文件

使用io流接受Excel文件
EN

Stack Overflow用户
提问于 2016-10-13 08:21:16
回答 1查看 1.1K关注 0票数 0

目前,我正在处理一个Excel文件,并将其路径作为输入

代码语言:javascript
复制
myObj = ProcessExcelFile("C:\SampleExcel.xlsx")

构造函数为

代码语言:javascript
复制
def __init__(self, filepath):
    '''
    Constructor
    '''
    if not os.path.isfile(filepath):
        raise FileNotFoundError(filepath)

    self.datawb = xlrd.open_workbook(filepath)

但是现在从另一个接口中,我想使用同一个类,但它不给我发送文件,而是通过io流发送文件

代码语言:javascript
复制
data = req.stream.read(req.content_length)
file = io.BytesIO(data)

当我传入我的文件时,这个文件变量作为

代码语言:javascript
复制
myObj = ProcessExcelFile(file)

这给我带来了错误

代码语言:javascript
复制
TypeError: argument should be string, bytes or integer, not _io.BytesIO

我想做一个init,这样它就可以像io流一样使用路径,或者如果不可能的话,我需要将io流中的文件作为优先级。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 08:25:20

您还需要修改类以允许流。通过open_workbook将流传递给file_contents

代码语言:javascript
复制
def __init__(self, filepath, stream=False):
    '''
    Constructor
    '''
    if stream:
        self.datawb = xlrd.open_workbook(file_contents=filepath.read())    
    else:        
        if not os.path.isfile(filepath):
            raise FileNotFoundError(filepath)
        self.datawb = xlrd.open_workbook(filepath)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40015789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档