Python模組之optparse

來源:互聯網
上載者:User

標籤:

參考:

  • http://www.cnblogs.com/captain_jack/archive/2011/01/11/1933366.html
  • https://docs.python.org/2/library/optparse.html

eg:

# This is the blocking Get Poetry Now! client.import datetime, optparse, socketdef parse_args():    usage = """usage: %prog [options] [hostname]:port ...This is the Get Poetry Now! client, blocking edition.Run it like this:  python get-poetry.py port1 port2 port3 ...If you are in the base directory of the twisted-intro package,you could run it like this:  python blocking-client/get-poetry.py 10001 10002 10003to grab poetry from servers on ports 10001, 10002, and 10003.Of course, there need to be servers listening on those portsfor that to work."""    parser = optparse.OptionParser(usage)    _, addresses = parser.parse_args()    if not addresses:        print parser.format_help()        parser.exit()    def parse_address(addr):        if ‘:‘ not in addr:            host = ‘127.0.0.1‘            port = addr        else:            host, port = addr.split(‘:‘, 1)        if not port.isdigit():            parser.error(‘Ports must be integers.‘)        return host, int(port)    return map(parse_address, addresses)def get_poetry(address):    """Download a piece of poetry from the given address."""    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    sock.connect(address)    poem = ‘‘    while True:        # This is the ‘blocking‘ call in this synchronous program.        # The recv() method will block for an indeterminate period        # of time waiting for bytes to be received from the server.        data = sock.recv(1024)        if not data:            sock.close()            break        poem += data    return poemdef format_address(address):    host, port = address    return ‘%s:%s‘ % (host or ‘127.0.0.1‘, port)def main():    addresses = parse_args()    elapsed = datetime.timedelta()    for i, address in enumerate(addresses):    #http://blog.csdn.net/suofiya2008/article/details/5603861        addr_fmt = format_address(address)        print ‘Task %d: get poetry from: %s‘ % (i + 1, addr_fmt)        start = datetime.datetime.now()        # Each execution of ‘get_poetry‘ corresponds to the        # execution of one synchronous task in Figure 1 here:        # http://krondo.com/?p=1209#figure1        poem = get_poetry(address)        time = datetime.datetime.now() - start        msg = ‘Task %d: got %d bytes of poetry from %s in %s‘        print  msg % (i + 1, len(poem), addr_fmt, time)        elapsed += time    print ‘Got %d poems in %s‘ % (len(addresses), elapsed)if __name__ == ‘__main__‘:    main()

 

Python模組之optparse

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.