加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

将多个文件流式传输到Python中的可读对象

发布时间:2020-12-20 11:36:18 所属栏目:Python 来源:网络整理
导读:我有一个函数,使用file.read(len)方法处理文件中的二进制数据.但是,我的文件很大,并且被分成许多小文件,每个50 MB.是否有一些包装类将许多文件提供给缓冲流,并提供read()方法? 类fileinput.FileInput可以做这样的事情,但它只支持逐行读取(没有参数的方法rea
我有一个函数,使用file.read(len)方法处理文件中的二进制数据.但是,我的文件很大,并且被分成许多小文件,每个50 MB.是否有一些包装类将许多文件提供给缓冲流,并提供read()方法?

类fileinput.FileInput可以做这样的事情,但它只支持逐行读取(没有参数的方法readline())并且没有read(len)指定要读取的字节数.

解决方法

我不熟悉执行该功能的标准库中的任何内容,因此,如果没有:

try:
    from cStringIO import StringIO
except ImportError:
    from StringIO import StringIO

class ConcatenatedFiles( object ):
    def __init__(self,file_objects):
        self.fds= list(reversed(file_objects))

    def read( self,size=None ):
        remaining= size
        data= StringIO()
        while self.fds and (remaining>0 or remaining is None):
            data_read= self.fds[-1].read(remaining or -1)
            if len(data_read)<remaining or remaining is None: #exhausted file
                self.fds.pop()
            if not remaining is None:
                remaining-=len(data_read)
            data.write(data_read)
        return data.getvalue()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读