首页 > 代码库 > 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