Sto scrivendomi un news reader.
Ora sono arrivato a skarikare i body dei msg e gli heade+subject(poi li fondero assieme).
Pero volevo sapere se il mio code si puo ottimizzare un pochino.
Ecco il code:
codice:import os import sys import socket import nntplib import string __author__ = "Kleidemos (francesca8810@ti.it)" __version__ = "$Revision: 0.2 $" __date__ = "$Date: 2004/05/6 14:00:00 $" __copyright__ = "Copyright (c) 2004 Luca Francesca" __license__ = "Python" kb = 8 * 1024 # a kb unit # # This class elaborate the NewsServerGestion downloaded files # class ArticleGestion: nws = '' article = [] def Close(self): nws.quit() # Load into a GROUP_article.txt file the body of the article specified # into GROUP.txx file # Because this requied many time you should use a modal dialog or any # other mode (threads for example) to not block the application GUI def ParseGroup(self, server, gname): self.nws = nntplib.NNTP(server) self.nws.group(gname) self.fin = file(gname+"/"+gname+".txt", "r") self.fout = file(gname+"/"+gname+"_article.txt", "w") while 1: self.line = self.fin.readline() if not self.line: self.fin.close() self.fout.close() break self.str_tmp = string.split(self.line, "\t") self.id = self.str_tmp[0] for i in self.nws.body(self.id)[3]: try: self.fout.write(i+"\n") except: print 'Error in write for file', gname+"/"+gname+"_article.txt", '\n' #self.fout.write("\n") self.fin.close() self.fout.close() # Merge the sebject-header file to the body file and build a group tree # to show # Because this requied many time you should use a modal dialog or any # other mode (threads for example) to not block the application GUI # TODO : 100% def BuildGroupTree(self, group, farticle, fsubject): pass # # This class download message from group and save it into a files # class NewsServerGestion: # __i = '' # __news = '' __msg = [] # __group_state = [] __beg = '' __end = '' # __stats = '' #single article __single_article = [] __response = '' __number = '' __list = '' #article range __articles_header = [] articles_list = [] #article id __article_id = [] def __init__(self, host): # Open a server connection self.news = nntplib.NNTP(host) self.news.getwelcome() # Send a article def SendArticle(self, file): f = open(file) s.post(f) # Download article id & header # Because this requied many time you should use a modal dialog or any # other mode (threads for example) to not block the application GUI def DownloadArticle(self): self.fname = self.group_state[4]+"/"+self.group_state[4]+".txt" self.articles_list = self.news.xover('subject', self.beg + '-' + self.end, self.fname) # Save group info def PrintGroupInfo(self, gname): if not os.path.exists(gname): os.mkdir(gname) self.group_state = self.news.group(gname) self.stats = self.group_state[0] # set group info self.beg = self.group_state[2] # start message self.end = self.group_state[3] # end message f = open(gname+"/"+gname+"_stat.txt", "w") try: f.write(self.stats) except: print 'Error in write stat files for', gname, 'group\n' f.close() def Close(self): self.news.quit() if __name__ == "__main__": print "Test NewsServerGestione on ", sys.getwindowsversion() n = NewsServerGestion("news.tin.it") n.PrintGroupInfo("it.comp.lang.python") n.DownloadArticle() n.Close() msg = ArticleGestion() msg.ParseGroup("news.tin.it", "it.comp.lang.python") msg.Close()
Tnk 1000000000000000000

Rispondi quotando
DD
