Python實(shí)現(xiàn)解析Bit Torrent種子文件內(nèi)容的方法
本文實(shí)例講述了Python實(shí)現(xiàn)解析BitTorrent種子文件內(nèi)容的方法。分享給大家供大家參考,具體如下:
有很多種子文件,有時(shí)候記不清里面都是什么東西,又不想一個(gè)一個(gè)的拖放到迅雷或BT軟件里頭看,
上網(wǎng)查了一下Python的腳本,自己也稍微修改了一下,代碼如下,粘貼到文本編輯器中:
保存成py后綴的,直接運(yùn)行
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編碼格式保存,否則中文會(huì)亂碼或無(wú)法編譯
PS:這里再為大家推薦一款相關(guān)的在線工具供大家參考使用:
在線BT種子torrent/磁性鏈接在線轉(zhuǎn)換工具:
http://tools.jb51.net/aideddesign/bt2mag
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python編碼操作技巧總結(jié)》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- linux平臺(tái)使用Python制作BT種子并獲取BT種子信息的方法
- 使用Python實(shí)現(xiàn)BT種子和磁力鏈接的相互轉(zhuǎn)換
- Python開(kāi)發(fā)實(shí)例分享bt種子爬蟲(chóng)程序和種子解析
- python通過(guò)urllib2爬網(wǎng)頁(yè)上種子下載示例
- Python 解析XML文件
- Python解析nginx日志文件
- Python配置文件解析模塊ConfigParser使用實(shí)例
- Python解析excel文件存入sqlite數(shù)據(jù)庫(kù)的方法
- Python解析json文件相關(guān)知識(shí)學(xué)習(xí)
相關(guān)文章
python調(diào)用c++返回帶成員指針的類指針實(shí)例
今天小編就為大家分享一篇python調(diào)用c++返回帶成員指針的類指針實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12協(xié)程Python 中實(shí)現(xiàn)多任務(wù)耗資源最小的方式
協(xié)程是 Python 中另外一種實(shí)現(xiàn)多任務(wù)的方式,只不過(guò)比線程更小,占用更小執(zhí)行單元(理解為需要的資源)。這篇文章主要介紹了協(xié)程Python 中實(shí)現(xiàn)多任務(wù)耗資源最小的方式,需要的朋友可以參考下2020-10-10python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實(shí)例講解
今天小編就為大家分享一篇python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06python 3.74 運(yùn)行import numpy as np 報(bào)錯(cuò)lib\site-packages\numpy\_
這篇文章主要介紹了python 3.74 運(yùn)行import numpy as np 報(bào)錯(cuò)lib\site-packages\numpy\__init__.py,原來(lái)需要更新一下numpy即可2019-10-10關(guān)于networkx返回圖的鄰接矩陣問(wèn)題
這篇文章主要介紹了關(guān)于networkx返回圖的鄰接矩陣問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Python3 XML 獲取雅虎天氣的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Python3 XML 獲取雅虎天氣的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02Python 測(cè)試框架unittest和pytest的優(yōu)劣
這篇文章主要介紹了Python 測(cè)試框架unittest和pytest的優(yōu)劣,幫助大家更好的進(jìn)行python程序的測(cè)試,感興趣的朋友可以了解下2020-09-09