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中的类与实例
Apr 27 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
python实现excel读写数据
Mar 02 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
windows下python安装pip方法详解
Feb 10 Python
tensorflow多维张量计算实例
Feb 11 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python中tab键是什么意思
Jun 18 Python
Python环境管理virtualenv&amp;virtualenvwrapper的配置详解
Jul 01 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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
初学CAKEPHP 基础教程
2009/11/02 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python的argparse库使用详解
2018/10/09 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
教师推荐信范文
2013/11/24 职场文书
旷课检讨书大全
2014/01/21 职场文书
三年级语文教学反思
2014/02/01 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
企业法人授权委托书
2014/09/25 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js