Python实现解析Bit Torrent种子文件内容的方法


Posted in Python onAugust 29, 2017

本文实例讲述了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 相关文章推荐
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
python opencv3实现人脸识别(windows)
May 25 Python
matplotlib subplots 调整子图间矩的实例
May 25 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
python判断正负数方式
Jun 03 Python
python的launcher用法知识点总结
Aug 07 Python
python实现简单文件读写函数
Feb 25 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 #Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 #Python
Python网络爬虫与信息提取(实例讲解)
Aug 29 #Python
Python开发的HTTP库requests详解
Aug 29 #Python
Python实现按学生年龄排序的实际问题详解
Aug 29 #Python
详解Python进程间通信之命名管道
Aug 28 #Python
基于Python闭包及其作用域详解
Aug 28 #Python
You might like
使用php来实现网络服务
2009/09/15 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python实现手绘图效果实例分享
2020/07/22 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
计算机求职信
2013/12/01 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
考试退步检讨书
2014/01/15 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
创建文明城市倡议书
2015/04/28 职场文书
暑期家教宣传单
2015/07/14 职场文书
生日宴会家属答谢词
2015/09/29 职场文书