837 Stimmen

Wie werden Befehlszeilenargumente gelesen/verarbeitet?

Ich bin ursprünglich ein C-Programmierer. Ich habe zahlreiche Tricks und "Hacks" gesehen, um viele verschiedene Argumente zu lesen.

Welche Möglichkeiten haben Python-Programmierer, dies zu tun?

Verwandte Seiten

9voto

Ryne Everett Punkte 5819

Pocoo's anklicken. ist intuitiver, erfordert weniger Boilerplate und ist mindestens so leistungsfähig wie argparse.

Die einzige Schwäche, auf die ich bisher gestoßen bin, ist, dass man die Hilfeseiten kaum anpassen kann, aber das ist normalerweise keine Voraussetzung und docopt scheint die klare Wahl zu sein, wenn es so ist.

8voto

tverrbjelke Punkte 1232

Wie Sie sehen können optparse "Das optparse-Modul ist veraltet und wird nicht mehr weiterentwickelt; die Entwicklung wird mit dem argparse Modul".

7voto

JON Punkte 1410
import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

Assuming the Python code above is saved into a file called prog.py
$ python prog.py -h

Ref-link: https://docs.python.org/3.3/library/argparse.html

5voto

Mufasa Punkte 51

Vielleicht interessieren Sie sich für ein kleines Python-Modul, das ich geschrieben habe, um die Handhabung von Kommandozeilenargumenten noch einfacher zu machen (Open Source und kostenlos zu verwenden) - Kommando

5voto

circular-ruin Punkte 2704

Eine weitere Option ist argh . Es baut auf argparse auf und ermöglicht es Ihnen, Dinge zu schreiben wie:

import argh

# declaring:

def echo(text):
    "Returns given word as is."
    return text

def greet(name, greeting='Hello'):
    "Greets the user with given name. The greeting is customizable."
    return greeting + ', ' + name

# assembling:

parser = argh.ArghParser()
parser.add_commands([echo, greet])

# dispatching:

if __name__ == '__main__':
    parser.dispatch()

Es wird automatisch Hilfe und so weiter generieren, und Sie können Dekoratoren verwenden, um zusätzliche Anleitungen zu geben, wie das arg-parsing funktionieren soll.

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