Python靜態(tài)編譯器說明研究
作者:佚名
本文對(duì)Python的版本選擇,IDE選擇及編碼的解決方案進(jìn)行了一番詳細(xì)的描述,實(shí)為Python初學(xué)者必讀的Python學(xué)習(xí)經(jīng)驗(yàn)心得。
使用了wxPython、pychecker編寫的Python靜態(tài)編譯器,用于在編譯器查找py腳本的錯(cuò)誤,開放源碼,與各位pythoner共享之,希望本文能給大家?guī)韼椭?,下面就一起進(jìn)去Python的世界吧。
代碼如下:
- def OnBuildOne(self, event):
- if self.paths.count != 0:
- self.Report.AppendText(self.CompileInfoHead("File"))
- path = self.paths[self.List.GetSelection()]
- print "Building " + path + " ..."
- try:
- py_compile.compile(path, None, None)
- except py_compile.PyCompileError, ex:
- print ex
- self.Report.AppendText("=-- Build Finished.\n\n")
- def OnBuildAll(self, event):
- if self.paths.count != 0:
- self.Report.AppendText(self.CompileInfoHead("File(s)"))
- for path in self.paths:
- print "Building " + path + " ..."
- try:
- py_compile.compile(path, None, None)
- except py_compile.PyCompileError, ex:
- print ex
- self.Report.AppendText("=-- Build Finished.\n\n")
- def OnBuildDirectory(self, event):
- dlg = wxDirDialog(self, "Select a directory for build", self.cfg[2])
- if dlg.ShowModal() == wxID_OK:
- path = dlg.GetPath()
- self.Report.AppendText(self.CompileInfoHead("Directory:", path))
- compile_dir(path, 10, None, 1, None)
- self.Report.AppendText("=-- Build Finished.\n\n")
- self.cfg[2] = dlg.GetPath()
- dlg.Destroy()
- def OnAbout(self, event):
- dlg = wxMessageDialog(self, "Present by Dracula 2005\n"
- "Build 2005.05.05\n", "About",
- wxOK | wxICON_INFORMATION)
- dlg.ShowModal()
- dlg.Destroy()
- def OnResize(self, event):
- sizeClient = self.GetClientSize()
- self.List.SetSize(sizeClient)
- sizeList = self.List.GetClientSize()
- self.Report.SetSize(wxSize(sizeClient.width, sizeClient.height-sizeList.height))
- def OnClose(self, event):
- try:
- f = open("config.cfg", "w")
- f.write(self.cfg[0])
- if self.cfg[0][-1] != '\n':
- f.write("\n")
- f.write(self.cfg[1])
- if self.cfg[1][-1] != '\n':
- f.write("\n")
- f.write(self.cfg[2])
- f.close()
- except IOError:
- pass
- sys.path = self.save_sys_path[:]
- self.timer.Stop()
- del self.timer
- del self.icon
- self.Destroy()
- def OnQuit(self, event):
- self.Close(true)
- def PyCheck(self, argv):
- argv2 = ['pychecker']
- argv2.append(argv)
- pychecker.checker2.main(argv2)
- #reload(pychecker.checker2)
- def AddPath(self, path):
- curdir = path
- system_dir = curdir + '\\data\\script'
- system_core_dir = curdir + '\\data\\script\\core'
- subsystem_dir = curdir + '\\data\\subsystem'
- subsystem_trashbin_dir = curdir + '\\data\\subsystem\\trashbin'
- sys.path = self.save_sys_path[:]
- sys.path.append(curdir)
- sys.path.append(system_dir)
- sys.path.append(system_core_dir)
- sys.path.append(subsystem_dir)
- sys.path.append(subsystem_trashbin_dir)
- def CompileInfoHead(self, str1, str2=""):
- return "=-- %s %s Compile %s %s ...\n" % (self.Date(), self.Time(), str1, str2)
- def Error(self, error):
- self.Report.AppendText(error)
- def Output(self, info):
- self.Report.AppendText(info)
- def Date(self):
- t = time.localtime(time.time())
- strDate = time.strftime("%Y.%m.%d", t)
- return strDate
- def Time(self):
- t = time.localtime(time.time())
- strTime = time.strftime("%I:%M:%S", t)
- return strTime
- def Notify(self):
- self.statusbar.SetStatusText(self.Date() + " " + self.Time(), 1)
- class MyApp(wxApp):
- def OnInit(self):
- self.frame = MyFrame(NULL, -1, "cd2Py Compiler")
- self.frame.Show(true)
- return true
- cd2Py = MyApp(0)
- import sys
- class errCatcher:
- def __init__(self):
- pass
- def write(self, stuff):
- cd2Py.frame.Error(stuff)
- class outCatcher:
- def __init__(self):
- passdef write(self, stuff):
- cd2Py.frame.Output(stuff)
- sys.stderr = errCatcher()
- sys.stdout = outCatcher()
- cd2Py.MainLoop()
【編輯推薦】
責(zé)任編輯:chenqingxiang
來源:
人民郵電出版社