今天有空,接着做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,并打印成字符串。