4 Stimmen

Befehlszeilenoptionen und Argumente mit getopt

Ich versuche, ein Stück Code in Python zu schreiben, um Befehlszeilenoptionen und Argumente mit getopt Modul zu erhalten. Hier ist mein Code:

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'xy:')
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for o,a in opts:
        if o in ("-x", "--xxx"):
            print(a)
        elif o in ("-y", "--yyy"):
            print(a)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

Das Problem ist, dass ich das Argument der Option nicht lesen kann x aber ich kann das Argument von y . Was sollte ich tun, um das zu beheben?

12voto

Charles Beattie Punkte 5419

Versuchen Sie getopt.getopt(sys.argv[1:], 'x:y:')

http://docs.python.org/library/getopt.html

Analysiert Kommandozeilenoptionen und Parameterliste. args ist die zu analysierende Argument Liste, die geparst werden soll, ohne den führenden Verweis auf das laufende Programm. Normalerweise bedeutet dies sys.argv[1:]. options ist die Zeichenkette der Optionen Buchstaben, die das Skript verarbeiten will erkennen will, wobei Optionen, die ein ein Argument, gefolgt von einem Doppelpunkt (':'; d.h. das gleiche Format, das Unix getopt() verwendet).

0voto

Archie Yalakki Punkte 452

Wenn Sie Argumente lesen wollen, dann sollte die Option ':' daneben stehen. Es gibt nur wenige Optionen, die keine Argumente benötigen, wie z.B. 'help' und 'verbose', bei denen kein ':' folgen muss.

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'x:y:h', ['xxx=', 'yyy=', 'help='])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for opt,arg in opts:
        if opt in('-h', '--help'):
            usage()
            sys.exit( 2 )
        elif opt in ('-x', '--xxx'):
            print(arg)
        elif opt in ('-y', '--yyy'):
            print(arg)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X