On Mon, Sep 28, 2009 at 20:44, "Martin v. Löwis" <mar...@v.loewis.de> wrote: >> Let's take ``getopt.getopt(sys.argv[1:], "a:b", ["alpha=", "beta"])`` >> as an example and simply assume that 'alpha' takes a string as an >> argument and that it's required and that 'beta' is a boolean flag. To >> pull everything out you could do:: >> >> options, args = getopt.getopt(sys.argv[1:], "a:b", ["alpha=", "beta"]) >> options_dict = dict(options) >> alpha = options_dict.get('-a', options_dict.get('--alpha', '')) >> beta = '-b' in options_dict or '--beta' in options_dict >> >> main(alpha, beta, args) >> >> Obviously if one of the getopt supporters has a better way of doing >> this then please speak up. > > As Yuvgoog Greenle says, the canonical getopt way is to write > > alpha = None > beta = False > options, args = getopt.getopt(sys.argv[1:],"a:b",['alpha=','beta']): > for opt, val in options: > if arg in ('-a','--alpha'): > alpha = val > elif arg in ('-b','--beta'): > beta = True > main(alpha, beta, args) > > Even though this is many more lines, I prefer it over > optparse/argparse: this code has only a single function call, > whereas the argparse version has three function calls to remember. > The actual processing uses standard Python data structures which > I don't need to look up in the documentation. > >> Now, Steven, can you show how best to do this in argparse? > > This demonstrates my point: you were able to use getopt right away > (even though not in the traditional way), whereas you need to ask > for help on using argparse properly. >
Actually, I had to read the docs for getopt. And I chose to not even try argparse when the creator of the module is cc'ed on the email and can obviously do a better example using his own code then I could. -Brett _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com