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检索特定内容的文本文件实例
Jun 05 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
Python提取频域特征知识点浅析
Mar 04 Python
python+django+rest框架配置创建方法
Aug 31 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
Python实现七个基本算法的实例代码
Oct 08 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
Python数据结构之队列详解
Mar 21 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
详解python之多进程和进程池(Processing库)
2017/06/09 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
Python下简易的单例模式详解
2019/04/08 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
优秀毕业生推荐信
2013/11/02 职场文书
仓库管理专业个人自我评价范文
2013/11/11 职场文书
最新奶茶店创业计划书
2014/01/25 职场文书
导航工程专业自荐信
2014/09/02 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
质量负责人岗位职责
2015/02/15 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
六年级语文教学反思
2016/03/03 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书