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实现的解析crontab配置文件代码
Jun 30 Python
Python中用startswith()函数判断字符串开头的教程
Apr 07 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
20行python代码实现人脸识别
May 05 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
python实现的config文件读写功能示例
Sep 24 Python
python创建n行m列数组示例
Dec 02 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 Python
利用python进行数据加载
Jun 20 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
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
使用Python对Excel进行读写操作
2017/03/30 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Python和Sublime整合过程图示
2019/12/25 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
机械制造与自动化应届生求职信
2013/11/16 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
springboot中的pom文件 project报错问题
2022/01/18 Java/Android