freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

python項(xiàng)目實(shí)踐(編輯修改稿)

2024-08-19 02:29 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 dname, None) args = name, if prefix == 39。start39。: args += attrs, if callable(method): method(*args) def startElement(self, name, attrs): (39。start39。, name, attrs) def endElement(self, name): (39。end39。, name)class WebsiteConstructor(Dispatcher, ContentHandler): passthrough = False def __init__(self, directory): = [directory] () def ensureDirectory(self): path = (*) print path print 39。39。 if not (path): (path) def characters(self, chars): if : (chars) def defaultStart(self, name, attrs): if : (39。39。 + name) for key, val in (): (39。 %s=%s39。 %(key, val)) (39。39。) def defaultEnd(self, name): if : (39。/%s39。 % name) def startDirectory(self, attrs): (attrs[39。name39。]) () def endDirectory(self): print 39。endDirectory39。 () def startPage(self, attrs): print 39。startPage39。 filename = (* + [attrs[39。name39。]+39。.html39。]) = open(filename, 39。w39。) (attrs[39。title39。]) = True def endPage(self): print 39。endPage39。 = False () () def writeHeader(self, title): (39。html\n head\n title39。) (title) (39。/title\n /head\n body\n39。) def writeFooter(self): (39。\n /body\n/html\n39。)parse(39。39。,WebsiteConstructor(39。public_html39。))看起來(lái)這個(gè)程序上面分析的復(fù)雜了一些,不過(guò)偉人毛毛說(shuō)過(guò),任何復(fù)雜的程序都是紙老虎。那我們?cè)賮?lái)分析一下這個(gè)程序。首先看到這個(gè)程序是有兩個(gè)類(lèi),其實(shí)完全可以當(dāng)作一個(gè)類(lèi),因?yàn)橛辛死^承。然后再來(lái)看它多了些什么,除了我們分析出來(lái)的startElement和endElement以及characters,多出來(lái)了startPage,endPage。startDirectory,endDirectory。defaultStart,defaultEnd。ensureDirectory。writeHeader,writeFooter。和dispatch,這些個(gè)函數(shù)。除了dispatch,前面的函數(shù)都很好理解,每一對(duì)函數(shù)都是單純的處理對(duì)應(yīng)的html標(biāo)簽以及xml節(jié)點(diǎn)。而dispatch比較復(fù)雜,復(fù)雜之處在于他是用來(lái)動(dòng)態(tài)拼合函數(shù)并且進(jìn)行執(zhí)行的。dispatch的處理思路是,首先根據(jù)傳遞的參數(shù)(就是操作名稱(chēng)以及節(jié)點(diǎn)名稱(chēng))判斷是否存在對(duì)應(yīng)的函數(shù)如startPage,如果不存在則執(zhí)行default+操作名稱(chēng):如defaultStart。一個(gè)函數(shù)一個(gè)函數(shù)搞清楚之后,就知道整個(gè)處理流程是什么樣了。首先創(chuàng)建一個(gè)public_html的文件,存放整個(gè)網(wǎng)站,然后讀xml的節(jié)點(diǎn),通過(guò)startElement和endElement調(diào)用dispatch進(jìn)行處理。然后就是dispatch怎么調(diào)用具體的處理函數(shù)了。 到此為止,這個(gè)項(xiàng)目算是分析完了。主要掌握的內(nèi)容一個(gè)是python中使用SAX處理XML,另一個(gè)就是python中的函數(shù)的使用,比如getattr,傳參數(shù)時(shí)的星號(hào)……python項(xiàng)目練習(xí)四:新聞聚合 13729176。C 作者:the5fire | 標(biāo)簽: python實(shí)戰(zhàn) | 發(fā)布:20111226 2:07 . 書(shū)中的第四個(gè)練習(xí),新聞聚合?,F(xiàn)在很少見(jiàn)的一類(lèi)應(yīng)用,至少我從來(lái)沒(méi)有用過(guò),又叫做Usenet。這個(gè)程序的主要功能是用來(lái)從指定的來(lái)源(這里是Usenet新聞組)收集信息,然后講這些信息保存到指定的目的文件中(這里使用了兩種形式:純文本和html文件)。這個(gè)程序的用處有些類(lèi)似于現(xiàn)在的博客訂閱工具或者叫RSS訂閱器。先上代碼,然后再來(lái)逐一分析:from nntplib import NNTPfrom time import strftime,time,localtimefrom import message_from_stringfrom urllib import urlopenimport textwrapimport reday = 24*60*60def wrap(string,max=70): 39。39。39。 39。39。39。 return 39。\n39。.join((string)) + 39。\n39。class NewsAgent: 39。39。39。 39。39。39。 def __init__(self): = [] = [] def addSource(self,source): (source) def addDestination(self,dest): (dest) def distribute(self): items = [] for source in : (()) for dest in : (items)class NewsItem: def __init__(self,title,body): = title = bodyclass NNTPSource: def __init__(self,servername,group,window): = servername = group = window def getItems(self): start = localtime(time() *day) date = strftime(39。%y%m%d39。,start) hour = strftime(39。%H%M%S39。,start)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1