首页 > 代码库 > Python Challenge 6

Python Challenge 6

第6关:

  既然下面的与riddle没有关系,那就不要管了啦,想哥什么时候有钱了再汇给你呗。现在还只是工科屌丝一枚。

  看上面,除了一个注释<!--zip-->就没了,拉进url一试,yes, find the zip.

  压缩文件,再拉一个channel.zip就弄出来了。

  剩下的与第5关类似。 the next nothing is ... 

import urllibimport urllib.requestimport zipfileimport osimport os.pathimport redef un_zip(file_name):    document_name = file_name.replace(.zip, ‘‘)    if not os.path.isdir(document_name):        os.mkdir(document_name)    with zipfile.ZipFile(file_name) as Zip:        for name in Zip.namelist():            Zip.extract(name, document_name)# 接收文件urllib.request.urlretrieve(http://www.pythonchallenge.com/pc/def/channel.zip, r.\channel.zip)# 解压文件un_zip(channel.zip)# 查找起点文件with open(channel\\readme.txt, r) as f:    nowfile = re.findall(\d+, f.read())[1]Zip = zipfile.ZipFile(channel.zip)comments = []# 查找结束文件while 1:    try:        with open(channel\\+nowfile+.txt) as f:            comments.append(Zip.getinfo(nowfile + .txt).comment.decode())            content = f.read()            if not re.match(Next nothing is , content):                print(content, nowfile)            nowfile = re.search(\d+, content).group()    except:        breakprint(‘‘.join(comments))‘‘‘ Collect the comments. ‘‘‘‘‘‘**********************************************************************************************************************************                                                            ****   OO    OO    XX      YYYY    GG    GG  EEEEEE NN      NN  ****   OO    OO  XXXXXX   YYYYYY   GG   GG   EEEEEE  NN    NN   ****   OO    OO XXX  XXX YYY   YY  GG GG     EE       NN  NN    ****   OOOOOOOO XX    XX YY        GGG       EEEEE     NNNN     ****   OOOOOOOO XX    XX YY        GGG       EEEEE      NN      ****   OO    OO XXX  XXX YYY   YY  GG GG     EE         NN      ****   OO    OO  XXXXXX   YYYYYY   GG   GG   EEEEEE     NN      ****   OO    OO    XX      YYYY    GG    GG  EEEEEE     NN      ****                                                            ****************************************************************** **************************************************************‘‘‘

  好吧,其实远没有这么简单,这题的技术含量可能是之前所有中最高的了。当然可能我是想写一个一步直接完成的程序。

  找到最后一个文件,‘collect the comments‘,这我确实不懂,查了才知道压缩文件每次打开,右边的注释就是这个所指的注释,利用getinfo()获得

  接着就是类似前面的图片数字将其组合起来。获得最后一张图。

  hockey应该就是最后答案了,但是事实上打开后,

  ‘it‘s in the air. look at the letters.‘

  又不得其解,总是在关键时刻掉链子。最后才发现那些HOCKEY大字母中组成的小写字母才是最终答案 oxygen。

 

学习函数:

  urlretrieve(url, filename): 从给定url获取文件或者直接html接收文件到filename中,其中filename是路径+文件名

  ZipFile(name): 打开zip压缩文件,之后用extract解压文件

  getinfo(name): name为压缩文件中的相应文件,获取相应的注释

  ‘‘.join(list): 发现python challenge中经常使用到,用来连接字符串

 

第7关卡壳啦。

 

Python Challenge 6