python添加命令列參數和異常處理

來源:互聯網
上載者:User

標籤:異常處理   python   socket   parse   


異常處理+命令列解析庫argparse


Socket.error 與一般I/O和通訊問題有關的

Socket.gaierror 與查詢地址有關的

Socket.herror 與其他地址錯誤有關

Socket.timeout 與一個socket上調用settimeout()後,逾時處理有關

#-*- coding:utf-8 -*-import sysimport socketimport argparse#通過命令列輸入參數 python 1_7_socket_errors.py --host=www.python.org --port=8080 --file=1_7_socket_errors.py#也可直接指定host和port,運行。def main():    #建立一個解析器    parser = argparse.ArgumentParser(description = "Socket Error")    #添加參數選項    parser.add_argument('--host',action="store",dest="host",required=False)    parser.add_argument('--port',action="store",dest="port",required=False,type=int)    parser.add_argument('--file',action="store",dest="file",required=False)    #調用parse_args()方法進行解析    given_args = parser.parse_args()    host = given_args.host    port = given_args.port    #也可以自己指定port,host    #host = "www.python.org"    #port = 80    filename = given_args.file    #處理建立通訊端異常    try:        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    except socket.error,e:        print "Error creating socket:%s"%e        sys.exit(1)    #處理串連通訊端異常    try:        s.connect((host,port))    except socket.gaierror,e:        print"Address-related error connecting to server:%s"%e        sys.exit(1)    except socket.error,e:        print"Connection error:%s"%e        sys.exit()    #處理髮送資料錯誤    try:        #GET方法 發送到網網站        s.sendall("GET %s HTTP/1.0\r\n\r\n"%filename)    except socket.error,e:        print"Error sending data:%s"%e        sys.exit(1)    while 1:        try:            #接受網站給返回的資料            buf = s.recv(2048)        except socket.error,e:            print"Error receiving data:%s"%e            sys.exit(1)        if not len(buf):            break        #將buf資料發送到命令列中        sys.stdout.write(buf)if __name__ == "__main__":    main()        


python添加命令列參數和異常處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.