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 代码效率的方法
Jul 03 Python
Python psutil模块简单使用实例
Apr 28 Python
python实现基本进制转换的方法
Jul 11 Python
Django URL传递参数的方法总结
Aug 28 Python
Python 装饰器使用详解
Jul 29 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
python 3.7.0 安装配置方法图文教程
Aug 27 Python
3个用于数据科学的顶级Python库
Sep 29 Python
python抓取京东小米8手机配置信息
Nov 13 Python
python提取照片坐标信息的实例代码
Aug 14 Python
python中使用input()函数获取用户输入值方式
May 03 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 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无限分类(树形类)的深入分析
2013/06/02 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
js的写法基础分析
2011/01/17 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
Python求离散序列导数的示例
2019/07/10 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
pytorch梯度剪裁方式
2020/02/04 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
设计大赛策划方案
2014/06/13 职场文书
党校毕业心得体会
2014/09/13 职场文书
2015初中团委工作总结
2015/07/28 职场文书
同乡会致辞
2015/07/30 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
15个值得收藏的JavaScript函数
2021/09/15 Javascript