pythonargparse

Simple argparse example wanted: 1 argument, 3 results


The documentation for the argparse python module, while excellent I'm sure, is too much for my tiny beginner brain to grasp right now. I don't need to do math on the command line or meddle with formatting lines on the screen or change option characters. All I want to do is "If arg is A, do this, if B do that, if none of the above show help and quit".


Solution

  • My understanding of the original question is two-fold. First, in terms of the simplest possible argparse example, I'm surprised that I haven't seen it here. Of course, to be dead-simple, it's also all overhead with little power, but it might get you started.

    import argparse
    
    parser = argparse.ArgumentParser()
    parser.add_argument("a")
    args = parser.parse_args()
    
    if args.a == 'magic.name':
        print 'You nailed it!'
    

    But this positional argument is now required. If you leave it out when invoking this program, you'll get an error about missing arguments. This leads me to the second part of the original question. Matt Wilkie seems to want a single optional argument without a named label (the --option labels). My suggestion would be to modify the code above as follows:

    ...
    parser.add_argument("a", nargs='?', default="check_string_for_empty")
    ...
    if args.a == 'check_string_for_empty':
        print 'I can tell that no argument was given and I can deal with that here.'
    elif args.a == 'magic.name':
        print 'You nailed it!'
    else:
        print args.a
    

    There may well be a more elegant solution, but this works and is minimalist.