[Python-Dev] PEP 389: argparse - new command line parsing module (original) (raw)

Eric Smith eric at trueblade.com
Tue Sep 29 22:56:38 CEST 2009


Paul Moore wrote:

2009/9/28 Yuvgoog Greenle <ubershmekel at gmail.com>:

1. There is no chance of the script killing itself. In argparse and optparse exit() is called on every parsing error (btw because of this it sucks to debug parseargs in an interpreter). That one does worry me. I'd rather argparse (or any library function) didn't call sys.exit on my behalf - it should raise an exception. Is it actually true that argparse exits? (I can imagine that it might if --help was specified, for example. An exception may not be right here, but I still don't like the idea of a straight exit - I've used too many C libraries that think they know when I want to exit).

You can override ArgumentParser.error() to raise an exception.

2. There is no chance the parser will print things I don't want it to print. That may also be bad - for example, Windows GUI-mode programs raise an error if they write to stdout/stderr. I could imagine using argparse for such a program, and wanting to do something with --help other than write to stdout and exit (a message box, for example). And yet, I'd want access to the text argparse would otherwise write to stdout.

It looks like this might not be so easy to do. I'd suggest adding a file-like object to the constructor, defaulting to sys.stderr; or maybe an ArgumentParser.print() method that can be overridden.

Eric.



More information about the Python-Dev mailing list