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采集博客中上传的QQ截图文件
Jul 18 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
django 类视图的使用方法详解
Jul 24 Python
python线程定时器Timer实现原理解析
Nov 30 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
Python中文纠错的简单实现
Jul 07 Python
Python初识逻辑与if语句及用法大全
Aug 07 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
CI框架常用方法小结
2016/05/17 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
Python简易版图书管理系统
2019/08/12 Python
python ubplot使用方法解析
2020/01/10 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
家长对小学生的评语
2014/01/28 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
mysql sql常用语句大全
2022/06/21 MySQL