【问题标题】:How do I read through 50+ text files within a zip file?如何阅读 zip 文件中的 50 多个文本文件?
【发布时间】:2020-11-12 03:50:57
【问题描述】:

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

【问题讨论】:

  • 您想在不使用zipfile 模块的情况下打开zipfile
  • 不使用适当的模块也可以读取 zip 文件,但这需要手动为 zip 文件编写解析器,而且肯定不会快速或高效。
  • 可以使用 exec() 来使用 unzip 命令获取文件列表并提取特定文件以测试序列。但是zipfile 是正确的做法......

标签: python list file


【解决方案1】:

我创建了以下代码来说明 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()

【讨论】:

    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    相关资源
    最近更新 更多