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在Windows8下获取本机ip地址的方法
Mar 14 Python
python非递归全排列实现方法
Apr 10 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
单链表反转python实现代码示例
Feb 08 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
小结Python的反射机制
Sep 28 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 实现类似js中alert() 提示框
2015/03/18 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
python版学生管理系统
2018/01/10 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
python处理大日志文件
2019/07/23 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
python 制作简单的音乐播放器
2020/11/25 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
联强国际笔试题面试题
2013/07/10 面试题
杭州时比特电子有限公司SQL
2013/08/22 面试题
英语专业推荐信
2013/11/16 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
小学生春游活动方案
2014/08/20 职场文书
公务员年度考核评语
2014/12/31 职场文书
工作失误检讨书
2015/01/26 职场文书
五四青年节活动总结
2015/02/10 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
小学庆六一主持词
2015/06/30 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书