資源描述:
《python入門_02》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Python語言進階第一天?程式間的溝通:Pipes?探詢他人的webserver:http?網(wǎng)頁分析:HTML?合併http和HTML:以網(wǎng)站統(tǒng)計為例?送信給許多朋友:smtp?Web應(yīng)用:cgi程式間的溝通:Pipes?每個程式有預(yù)設(shè)的資料管:標準輸入(stdin)、標準輸出(stdout)、標準診斷(stderr)?每個管子的資料流都是單向的?臺灣水電工:把管子接起來popen(),popen2(),popen3()?可以用pythonscript去控制互動式介面的應(yīng)用軟體,例如:Gnuplot?在互動應(yīng)用上加上批次處理功能1探詢他人的webse
2、rver:httplib?範例:1importsys,httplib2defprobe(host):3'''probethewebserverprogramofahost'''4h=httplib.HTTP()5h.set_debuglevel(0)6dict={'ETag':''}#default(someserversdon'treturnthis)7try:8h.connect(host)9h.putrequest('GET','/')10h.endheaders()11status,reason,headers=h.getreply()12if
3、headers:13#printheaders14forheaderinheaders.headers:15line=header.strip()16index=line.find(':')17ifindex==-1:raise'FormatError'18dict[line[0:index]]=line[index+2:]19except:20dict['Server']='Unknown'21return'%s,%s,%s'%(host,dict['ETag'],dict['Server'])2223if__name__=="__main__":2
4、4iflen(sys.argv)<2:25sys.stderr.write('%shost(s)...'%sys.argv[0])26sys.exit(0)27forhostinsys.argv[1:]:28printprobe(host)29?剛剛才發(fā)現(xiàn):從python2.0開始HTTPclass是為了後向相容而留下的,新程式請用urllib。讀取網(wǎng)頁:urllib模組1>>>importurllib2>>>page=urllib.urlopen('http://www.python.org')3>>>content=page.read()4>>
5、>page.close()?urlopen()傳回類似檔案的物件,有read(),readline(),readlines(),fileno(),close(),info()和geturl()等取用方法。?也可以讀ftp協(xié)定的URL?POST資料到網(wǎng)頁:引數(shù)data=(用urllib.urlencode()來準備application/x-www-form-urlencoded型態(tài)的引數(shù))21>>>importurllib2>>>dict={'name':'葉平','email':'pyeh@phys.ntu.edu.tw'}3>>>args=urll
6、ib.urlencode(dict)4>>>printargs5'name=%B8%AD%A5%AD&email=pyeh%40phys.ntu.edu.tw'6>>>page=urllib.urlopen('http://myweb.net/',data=args)7>>>content=page.read()8>>>page.close()?有proxy:引數(shù)proxies=1>>>importurllib2>>>myproxy={'http':'http://proxy.ntu.edu.tw:3128','ftp':'ftp://some.whe
7、re'}3>>>page=urllib.urlopen('http://www.python.org',proxies=myproxy)4>>>content=page.read()5>>>page.close()urllib模組(II)?可以取代httplib程式的函式:page.info()?傳回mimetools.Message類別的物件?不過mimetools模組在Python2.3中作廢了,說是要用email模組取代,但使用介面似乎不完全相同1>>>...2>>>page=urllib.urlopen('http://www.python.o
8、rg/')3>>>m=page.info()4>>>printm.dict5{'date':'