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 translator使用实例
Sep 06 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
一份python入门应该看的学习资料
Apr 11 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 Python
call在Python中改进数列的实例讲解
Dec 09 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 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 Ajax乱码
2008/04/09 PHP
php 验证码制作(网树注释思想)
2009/07/20 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
HTTP 304错误的详细讲解
2013/11/13 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
详解python时间模块中的datetime模块
2016/01/13 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
幼师自我鉴定
2014/02/01 职场文书
物流专员岗位职责
2014/02/17 职场文书
个人委托书范本
2014/04/02 职场文书
教代会闭幕词
2015/01/28 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
新闻报道稿范文
2015/07/23 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
mysql死锁和分库分表问题详解
2021/04/16 MySQL
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
Python if else条件语句形式详解
2022/03/24 Python