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字典排序实例详解
May 20 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
python截取两个单词之间的内容方法
Dec 25 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
numpy数组广播的机制
Jul 12 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
Python 多线程之threading 模块的使用
Apr 14 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
第三节--定义一个类
2006/11/16 PHP
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
python之Socket网络编程详解
2016/09/29 Python
简单实现python数独游戏
2018/03/30 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
python多线程并发实例及其优化
2019/06/27 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
班级体育活动总结
2014/07/05 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python