Python實現(xiàn)解析Bit Torrent種子文件內(nèi)容的方法
本文實例講述了Python實現(xiàn)解析BitTorrent種子文件內(nèi)容的方法。分享給大家供大家參考,具體如下:
有很多種子文件,有時候記不清里面都是什么東西,又不想一個一個的拖放到迅雷或BT軟件里頭看,
上網(wǎng)查了一下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編碼格式保存,否則中文會亂碼或無法編譯
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é)》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python調(diào)用c++返回帶成員指針的類指針實例
今天小編就為大家分享一篇python調(diào)用c++返回帶成員指針的類指針實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12協(xié)程Python 中實現(xiàn)多任務(wù)耗資源最小的方式
協(xié)程是 Python 中另外一種實現(xiàn)多任務(wù)的方式,只不過比線程更小,占用更小執(zhí)行單元(理解為需要的資源)。這篇文章主要介紹了協(xié)程Python 中實現(xiàn)多任務(wù)耗資源最小的方式,需要的朋友可以參考下2020-10-10python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實例講解
今天小編就為大家分享一篇python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06python 3.74 運行import numpy as np 報錯lib\site-packages\numpy\_
這篇文章主要介紹了python 3.74 運行import numpy as np 報錯lib\site-packages\numpy\__init__.py,原來需要更新一下numpy即可2019-10-10Python 測試框架unittest和pytest的優(yōu)劣
這篇文章主要介紹了Python 測試框架unittest和pytest的優(yōu)劣,幫助大家更好的進(jìn)行python程序的測試,感興趣的朋友可以了解下2020-09-09