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 13 Python
python妙用之编码的转换详解
Apr 21 Python
使用python爬取B站千万级数据
Jun 08 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
基于python实现简单日历
Jul 28 Python
python读取目录下最新的文件夹方法
Dec 24 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
keras打印loss对权重的导数方式
Jun 10 Python
如何使用 Flask 做一个评论系统
Nov 27 Python
浅谈Python基础之列表那些事儿
May 11 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
php命令行用法入门实例教程
2014/10/27 PHP
PHP调用其他文件中的类
2018/04/02 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Python 异常处理的实例详解
2017/09/11 Python
Python numpy 常用函数总结
2017/12/07 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
学校司机岗位职责
2013/11/14 职场文书
班级体育活动总结
2014/07/05 职场文书
个人融资协议书
2014/10/02 职场文书
岳庙导游词
2015/02/04 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
教师工作证明范本
2015/06/12 职场文书
大学军训口号大全
2015/12/24 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
详解Go与PHP的语法对比
2021/05/29 PHP
如何优化vue打包文件过大
2022/04/13 Vue.js