时隔两个月, 又重新回来写博客了
今天重新来做这个挑战题目
首先入口地址:http://www.pythonchallenge.com/pc/def/peak.html
打开来看, 没错,你没有看错,只有一副画
然后画的下面 有一句话 "pronounce it", 什么鬼! 它的发音???
只看这个看不出来什么意思.
那么按照以往的经验, 直接F12 看网页源码吧
<html> <head> <title>peak hell</title> <link rel="stylesheet" type="text/css" href="../style.css"> </head> <body> <center> <img src="peakhell.jpg"/> <br><font color="#c0c0ff"> pronounce it <br> <peakhell src="banner.p"/> </body> </html> <!-- peak hell sounds familiar ? --> 这样明显看到有一个文件 banner.p, 直觉认为需要打开它 :http://www.pythonchallenge.com/pc/def/banner.p这样我们看到了一个乱码的文本文件
接着这个源码下面有一句提示“peak hell sounds familiar ”! 这一句话就比较重要了
前面说他的发音, 这里提示说, 发音和“peak hell ” 类似, 再结合python的知识, 这一关应该是要用到 pickle 这个包了(我不会告诉你我是查看别人的)!
好了,分析工作完成,将这个文件内容下载到本地,然后执行解析程序如下(报告老板,他是抄的):
#!/usr/bin/python # coding:utf-8 import pickle f=open('1.txt') for line in pickle.load(f): print ''.join([x[0] * x[1] for x in line]) f.close()然后得到了下面的结果: ##### ##### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ### #### ### ### ##### ### ##### ### ### #### ### ## #### ####### ## ### #### ####### #### ####### ### ### #### ### ### ##### #### ### #### ##### #### ##### #### ### ### #### ### #### #### ### ### #### #### #### #### ### #### #### ### #### #### ### #### #### #### #### ### ### #### #### #### #### ## ### #### #### #### #### #### ### #### #### #### #### ########## #### #### #### #### ############## #### #### #### #### ### #### #### #### #### #### #### #### #### #### #### #### ### #### #### #### #### #### #### ### #### #### #### ### #### #### #### #### ### #### ### ## #### #### ### #### #### #### #### #### ### ## #### ### ## #### #### ########### #### #### #### #### ### ## #### ### ###### ##### ## #### ###### ########### ##### ### ###### 也就是说下一关的地址是:http://www.pythonchallenge.com/pc/def/channel.html关于它本关更多的解决方案:http://wiki.pythonchallenge.com/index.php?title=Level4:Main_Page
那现在回头来看一下 pickle 这个包是什么意思
百度一下,得到这样的答案
加工数据的,可以用来存取结构化数据。举个例子:
一个字典a = {'name':'Tom','age':22},用pickle.dump存到本地文件,所存数据的结构就是字典,而普通的file.write写入文件的是字符串。读取时,pickle.load返回的是一个字典,file.read返回的是一个字符串。如下代码:
1 2 3 4 5 6 7 import pickle a = { 'name' : 'Tom' , 'age' : 22 } with open ( 'text.txt' , 'wb' ) as file : pickle.dump(a, file ) with open ( 'text.txt' , 'rb' ) as file2: b = pickle.load(file2) print ( type (b))得到的b的类型是字典,b和a是等价的,也就是说pickle可以把字典、列表等结构化数据存到本地文件,读取后返回的还是字典、列表等结构化数据。而file.write、file.read存取的对象是字符串。这个叫做持久化数据存贮
这个东东看着(bu)好(ming)高(jue)大(li)上的样子,有木有!
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
一些更多pickle的知识:http://blog.csdn.net/qiqiyingse/article/details/77747777
本关小结:
本关收货最大的一点其实就是了解到了 pickle这个模块.
让我们发散思维一下, 现在密码那么多,总想把他找个地方全部记下来, 那么使用pickle的dump方法将密码存贮起来,
等到自己忘记了, 在找回来,起码这种方式,被别人拿到,他也不知道怎么破解!(程序员的思维,哈哈哈!)