SkyDriveZip Renamer

Published by kemege on July 5th, 2011 - in 源代码备份

SkyDriveZip主界面

SkyDriveZip.pyw

0001 #encoding=utf-8
0002 import wx,zipfile,os
0003 
0004 class FileDropTarget(wx.FileDropTarget):
0005     def __init__(self,window):
0006         wx.FileDropTarget.__init__(self)
0007         self.window=window
0008 
0009     def OnDropFiles(self,x,y,filenames):
0010         #self.window.SetValue(filenames[0])
0011         for filename in filenames:
0012             f = zipfile.ZipFile(filename)
0013             namelist = [[],[]]
0014             try:
0015                 info = f.open(ur'Encoding Errors.txt','r')
0016                 originlist = f.namelist()
0017                 f.getinfo(u'Encoding Errors.txt').filename='1.txt'
0018                 for line in info.readlines():
0019                     if (line.find(' -> ')!=-1) and (line.find('Original File Name  ->  New File Name')==-1):
0020                         namelist[0].append(line[:line.index(' -> ')])
0021                         namelist[1].append(line[line.index(' -> ')+4:].replace('\r\r\n',''))
0022                 self.window.WriteText(str(originlist))
0023                 newfile = zipfile.ZipFile(filename[:len(filename)-4]+'.renamed.zip','a')
0024                 for name in originlist:
0025                     if name == 'Encoding Errors.txt':continue
0026                     f.extract(name,'temp')
0027                     if name in namelist[1]:
0028                         i = namelist[1].index(name)
0029                         newfile.write('temp\\'+namelist[1][i],namelist[0][i].decode('utf-8').encode('gbk'))
0030                     else:
0031                         newfile.write('temp\\'+name,name)
0032                     os.remove('temp\\'+name)
0033                 os.rmdir('temp')
0034                 f.close()
0035                 newfile.close()
0036                 self.window.WriteText(filename+': Parsed successfully.\n')
0037             except KeyError:
0038                 self.window.WriteText(filename+': This Zip file does not require renaming.\n')
0039             except zipfile.BadZipfile:
0040                 self.window.WriteText(filename+': Not ZIP file.\n')
0041 
0042 class Query_Frame(wx.Frame):
0043     def __init__(self,parent,id,title):
0044         wx.Frame.__init__(self, parent, id, title,pos=(150, 150), size=(625, 422))
0045         #生成Panel
0046         self.panel=wx.Panel(self,-1)
0047         #放置控件
0048         self.edt = wx.TextCtrl(self.panel,-1,pos=(10,10),size=(595,332),style=wx.TE_MULTILINE)
0049         self.btnSave = wx.Button(self.panel,-1,'&Save as text')
0050         self.btnExit = wx.Button(self.panel,-1,'E&xit program')
0051         self.tip = wx.StaticText(self.panel,-1,'Drag and drop file rename')
0052         tipfont = wx.Font(20,wx.SCRIPT,wx.NORMAL,wx.NORMAL)
0053         tipfont.MakeBold()
0054         self.tip.SetBackgroundColour('white')
0055         self.tip.SetForegroundColour('grey')
0056         self.tip.SetFont(tipfont)
0057         #绑定事件
0058         self.Bind(wx.EVT_SIZE,self.OnSize,self)
0059         self.btnExit.Bind(wx.EVT_BUTTON,self.Close,self)
0060         DropTarget = FileDropTarget(self.edt)
0061         self.edt.SetDropTarget(DropTarget)
0062 
0063 
0064     def OnSize(self,evt):#缩放窗口
0065         self.panel.Size=self.Size
0066         self.edt.Size=(self.Size[0]-30,self.Size[1]-90)
0067         self.btnSave.Position=(self.Size[0]-195,self.Size[1]-75)
0068         self.btnExit.Position=(self.btnSave.Position[0]+85,self.btnSave.Position[1])
0069         self.tip.Position=(self.edt.Size[0]/2-190,self.edt.Size[1]/2)
0070 
0071 
0072 
0073 
0074 class Query_Gui(wx.App):
0075     def OnInit(self):
0076         frame = Query_Frame(None, -1, u"SkyDrive Zip File Renamer")
0077         self.SetTopWindow(frame)
0078         frame.Show(True)
0079         return True
0080 
0081 
0082 app=Query_Gui(redirect=True)#redirect=True
0083 app.MainLoop()

 

© 周超的个人主页