这里有新鲜出炉的Python入门,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
这篇文章主要介绍了Python实现解析Bit Torrent种子文件内容的方法,结合实例形式分析了Python针对Torrent文件的读取与解析相关操作技巧与注意事项,需要的朋友可以参考下
本文实例讲述了Python实现解析BitTorrent种子文件内容的方法。分享给大家供大家参考,具体如下:
有很多种子文件,有时候记不清里面都是什么东西,又不想一个一个的拖放到迅雷或BT软件里头看,
上网查了一下Python的脚本,自己也稍微修改了一下,代码如下,粘贴到文本编辑器中:
保存成py后缀的,直接运行
- import re
- def tokenize(text, match=re.compile("([idel])|(/d+):|(-?/d+)").match):
- i = 0
- while i < len(text):
- m = match(text, i)
- s = m.group(m.lastindex)
- i = m.end()
- if m.lastindex == 2:
- yield "s"
- yield text[i:i+int(s)]
- i = i + int(s)
- else:
- yield s
- def decode_item(next, token):
- if token == "i":
- # integer: "i" value "e"
- data = int(next())
- if next() != "e":
- raise ValueError
- elif token == "s":
- # string: "s" value (virtual tokens)
- data = next()
- elif token == "l" or token == "d":
- # Container: "l" (or "d") values "e"
- data = []
- tok = next()
- while tok != "e":
- data.append(decode_item(next, tok))
- tok = next()
- if token == "d":
- data = dict(zip(data[0::2], data[1::2]))
- else:
- raise ValueError
- return data
- def decode(text):
- try:
- src = tokenize(text)
- data = decode_item(src.next, src.next())
- for token in src: # look for more tokens
- raise SyntaxError("trailing junk")
- except (AttributeError, ValueError, StopIteration):
- raise SyntaxError("syntax error")
- return data
- if __name__ == "__main__":
- #需要读取的文件名称放到这里
- data = open("The_Shawshank_Redemption.torrent", "rb").read()
- torrent = decode(data)
- myfile = file("testit.txt", 'w')
- a = u'文件名称'.encode('gbk')
- b = u'文件大小'.encode('gbk')
- print "%s /t %s /n" % (a,b)
- for file in torrent["info"]["files"]:
- print "%s /t %d Mb " % ("/".join(file["path"]), file["length"]/1024/1024)
- print "-----------------------------------------------------------------"
注意要保存成Utf-8格式的文件,不能使用ASCII编码格式保存,否则中文会乱码或无法编译
希望本文所述对大家Python程序设计有所帮助。
来源: http://www.phperz.com/article/17/0912/345564.html