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生成二维码的实例详解
Oct 29 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
python 除法保留两位小数点的方法
Jul 16 Python
使用Scrapy爬取动态数据
Oct 21 Python
Python 多维List创建的问题小结
Jan 18 Python
在pycharm 中添加运行参数的操作方法
Jan 19 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
python定间隔取点(np.linspace)的实现
Nov 27 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
Python如何定义接口和抽象类
Jul 28 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
使用python绘制横竖条形图
Apr 21 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 cookie 登录验证示例代码
2009/03/16 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
javascript中length属性的探索
2011/07/31 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
js实现动态时钟
2020/03/12 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
举例区分Python中的浅复制与深复制
2015/07/02 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
python实现单机五子棋
2020/08/28 Python
python中count函数知识点浅析
2020/12/17 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
初中音乐教学反思
2014/01/12 职场文书
仓管员岗位责任制
2014/02/19 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python