首页 > 解决方案 > 如何阅读 zip 文件中的 50 多个文本文件?

问题描述

我正在尝试编写一个函数,该函数将列表作为输入并确定列表中的数字序列是否对应于 zipfile 中许多文本文件中的数字序列。每个文本文件页面包含 2 个不同的数字。例如,如果用户输入 [1, 30, 3],则程序应从读取第 1 页开始,以查看数字 30 是否在该页上。如果数字 30 在该页面上,则程序应通读第 30 页以查看数字 3 是否存在。如果数字 3 存在,那么序列是正确的,程序应该返回 true,如果序列在任何时候都不正确,它应该返回 false。如何有效地阅读所有页面?(不允许使用 zipfile 模块)

标签: pythonlistfile

解决方案


我创建了以下代码来说明 testSequence 方法

class zipSequence(object):
    def __init__(self, **kwargs):
        self.zFN = kwargs['zipfile']
        self.seqList = kwargs['seqList']
        self.accessPageList(**kwargs)
    def accessPageList(self, **kwargs):
        '''
        FIXME: create access to list of pages
        '''
        mx = max(self.seqList)+1
        mxList = range(mx)
        self.pgList = [None for i in mxList] 
        for i in mxList:
            n1= self.seqList[i]
            try: n2 = self.seqList[i+1]
            except: break
            v = str((n1,n2))
            self.pgList[n1] = v
    def page(self, i, **kwargs):
        '''
        FIXME: access page 'i';  either via zipfile or exec
        '''
        return self.pgList[i] 
    def testSequence(self):
        mxList = range(len(self.seqList))                    
        for i in mxList[0:-1]:
            pattern = self.seqList[i+1]
            curPage = self.seqList[i]
            page = self.page(curPage)
            if page.find(str(pattern)) > -1: continue
            print("Page %d does not contain %d" % seq)
            return False
        print("Sequence is valid", self.seqList)
        return True

ts = zipSequence(zipfile = 'dummy.zip', seqList = [1,30,3])
ts.testSequence()

推荐阅读