PythonChallenge 6 解答过程

今天有空,接着做python challenge的第六题

根据前几个题的经验,直接看网页源码。

源码提示“zip”,随即尝试将网页地址中的“html”换成“zip”,提示下载压缩包。

下载并保存在桌面(pythonChallenge6.zip)。发现里面的“readme.txt”文件,

随即编写程序,从90052.txt开始读取文件内容。

import re,os
import zipfile as zp
PATH = "/Users/username/Desktop"      #下载的压缩包存放的路径
os.chdir(PATH)          #将工作目录转至所下载zip的文件目录

def getEnd(nums,z):
    """
    利用递归的方法,读取压缩包内每个文件,
    直至找到内容不一样的文件,返回该文件名
    l1 是用来保存各文件comment的
    """
    global l1
    filename = nums+".txt"
    target = z.read(filename)
    l1.append(z.getinfo(filename).comment)
    if "Next nothing is " in target:
        val = re.search("\d+",target).group()
        return getEnd(val,z)
    else:
        print z.read(filename)
        return filename

if __name__=="__main__":
    global l1
    l1 = []
    z = zp.ZipFile("pythonChallenge6.zip")
    tar = getEnd("90052",z)
    print tar
    s1 = ""
    for x in l1:
        s1 += x
    print s1
需要说明的是,第一次写程序时,发现打印出tar的值是:collect  the comments

当时看到这个结果,疑问!(还要看评论???)

幸好想起了zipfile.ZipFile对象中的comment属性,

于是再完善程序,收集压缩包内各个文件的comment,并打印成字符串。



没有更多推荐了,返回首页