- 论坛徽章:
- 0
|
最近正在学习Python,练手写的小工具,图形界面用的是wxPython,经测试在计算2G左右的大文件MD5校验码时比网上流传的winMD5速度快一倍左右。增加了双色球随机数生成功能,方便买彩票,呵呵!
源码:
# -*- coding: cp936 -*-
import wx
import hashlib,random
class MyFileDropTarget(wx.FileDropTarget):
def __init__(self, window):
wx.FileDropTarget.__init__(self)
self.window = window
def OnDropFiles(self, x, y, filenames):
#self.window.AppendText("\n%d file(s) dropped at (%d,%d):\n" % (len(filenames), x, y))
for file in filenames:
m = hashlib.md5()
f = open('\\'.join(file.split('\\')),'rb')
bytes = f.read(10240)
while(bytes != ''):
m.update(bytes)
bytes = f.read(10240)
f.close()
md5value = m.hexdigest()
self.window.AppendText("%s\t%s\n" % (md5value.upper(),file.split('\\')[-1]))
class InsertFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'MD5计算工具(32位)-吃鱼翅的鱼 xglcr@163.com', size=(430, 285))
panel = wx.Panel(self)
font=wx.Font(9,wx.MODERN, wx.NORMAL, wx.NORMAL)
wx.StaticText(panel, -1, u"字 符 串:", pos=(15, 15))
self.usertext = wx.TextCtrl(panel, -1, "", pos=(75,12), size=(330, 20))
self.usertext.SetFont(font)
wx.StaticText(panel, -1, u"加密结果:", pos=(15,50))
self.comtext = wx.TextCtrl(panel, -1, "", pos=(75,47), size=(330, 20), style=wx.TE_READONLY)
self.comtext.SetFont(font)
self.button1 = wx.Button(panel, label=u'清 空', pos=(30, 80), size=(80, 25))
self.button2 = wx.Button(panel, label=u'加 密', pos=(120, 80), size=(80, 25))
self.button3 = wx.Button(panel, label=u'退 出', pos=(325, 222), size=(80, 25))
wx.StaticText(panel, -1, u"注数:", pos=(210,85))
self.number = wx.TextCtrl(panel, -1, "", pos=(250,83), size=(30, 20))
self.button4 = wx.Button(panel, label=u'双色球随机数生成', pos=(290, 80), size=(110, 25))
self.Bind(wx.EVT_BUTTON, self.onclear, self.button1)
self.Bind(wx.EVT_BUTTON, self.onencrypt, self.button2)
self.Bind(wx.EVT_BUTTON, self.onclose, self.button3)
self.Bind(wx.EVT_BUTTON, self.printball, self.button4)
#self.button1.Enable(False)
self.text = wx.TextCtrl(panel, -1, "", (15, 115), (390, 100), style=wx.TE_MULTILINE|wx.HSCROLL|wx.TE_READONLY)
dt = MyFileDropTarget(self.text)
self.text.SetDropTarget(dt)
self.text.SetFont(font)
wx.StaticText(panel, -1, u"拖动文件到这个窗口,并自行计算它们的MD5校验", pos=(15,225))
def printball(self,event):
self.text.Clear()
num = self.number.GetValue()
if not num:
self.text.AppendText("请输入要生成的注数!")
for i in range(int(num)):
balls = self.generate(self)
self.text.AppendText("红球:%s\t蓝球:%2s\n" % (balls[0],balls[1]))
def generate(self,event):
tmplist = range(1, 34)
redballs = []
for i in range(6):
redballs.append(tmplist.pop(random.randint(0, len(tmplist)-1)))
blueball = random.randint(1,16)
return redballs,blueball
def onclear(self,event):
self.usertext.Clear()
self.comtext.Clear()
self.text.Clear()
#self.button1.Enable(False)
def onencrypt(self,event):
self.comtext.SetValue(hashlib.md5(self.usertext.GetValue()).hexdigest())
#self.button1.Enable(True)
def onclose(self,event):
self.Close()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = InsertFrame(parent=None, id=-1)
frame.Show()
app.MainLoop()
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/33982/showart_2147590.html |
|