Python: Snippet Argumente für Command Line Tools mit getopt oder argparse

Mein persönlicher Favorit ist argparse, der Vollständigkeit halber aber beide Lösungen. getopt und argpase sind beide bei Python dabei und müssen nicht nachinstalliert werden.

GETOPT Ansatz:

#!/usr/bin/env python

import getopt
import sys

def usage():
    print "test1.py - A test script.\n" \
          " -p, --print Return a string \n" \
          " -h, --help Help"


def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "p:h", ['print=', 'help'])

    except getopt.GetoptError as err:
        print str(err)
        sys.exit(2)

    for o, a in opts:
        if o in ('-p', '--print'):
            string_to_print = a

        if o in ('-h', '--help'):
            usage()
            sys.exit(2)

    if not 'string_to_print' in locals():
        print "-p or --print is not given or string is missing\n"
        usage()
        sys.exit(2)

    print string_to_print


if __name__ == "__main__":
    main()

ARGPARSE Ansatz:

#!/usr/bin/env python

import argparse

def main():
        parser = argparse.ArgumentParser(description="test3.py - A test script.")
        parser.add_argument('-p','--print',dest='string_to_print', required=True, help="String to print")
        args = parser.parse_args()

        print args.string_to_print

if __name__ == "__main__":
        main()

 

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.