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()








