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登录pop3邮件服务器接收邮件的方法
Apr 30 Python
python实现自动重启本程序的方法
Jul 09 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Python reques接口测试框架实现代码
Jul 28 Python
Python datetime 如何处理时区信息
Sep 02 Python
python 利用toapi库自动生成api
Oct 19 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 Python
Python使用BeautifulSoup4修改网页内容
May 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
5.PHP的其他功能
2006/10/09 PHP
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Python中如何获取类属性的列表
2016/12/26 Python
python的多重继承的理解
2017/08/06 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
用python写爬虫简单吗
2020/07/28 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
中学生的1000字检讨书
2014/10/11 职场文书
简爱电影观后感
2015/06/10 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书