[PYTHON] Skripterstellung mit Fertigerbefehlsdefinition

Paver ist eine Bibliothek zum einfachen Erstellen von Befehlszeilentools in Python.

Mit der Standardbibliothek von Python wie argparse können Sie in gewissem Umfang problemlos Befehlszeilentools erstellen, aber Paver erleichtert das Erstellen von Skripten mit Unterbefehlen erheblich. ..

Die Paver-Originaldokumentation konzentriert sich auf die Automatisierung der Python-Verpackung. Daher möchte ich sie als Tool zur Definition und Ausführung von Aufgaben erläutern.

installieren

$ easy_install paver

Mach eine Aufgabe

Wenn Sie eine Datei mit dem Namen "pavement.py" erstellen und dann eine Funktion mit einem Dekorateur namens "@ task" erstellen, wird dies zu einer Aufgabe.

pavement.py


from paver.easy import *

@task
def hello():
    """My first task."""
    print 'hello'

Führen Sie zum Ausführen der Aufgabe den Namen der Fertigeraufgabe aus.

$ paver hello
---> pavement.hello
hello

paver -h zeigt auch die von Ihnen definierten Aufgaben an. docstrin ist die Beschreibung für diesen Befehl.

$ paver -h
---> paver.tasks.help
Usage: paver [global options] taskname [task options] [taskname [taskoptions]]

Options:
  --version             show program's version number and exit
  -n, --dry-run         don't actually do anything
…
Tasks from pavement:
  hello          - My first task.

Nimm ein Argument

Um ein Argument aufzunehmen, fügen Sie der Funktion, die die Aufgabe definiert, den Dekorator "@ consumer_args" hinzu und schreiben Sie das Argument "args".

pavement.py


from paver.easy import *

@task
@consume_args
def hello(args):
    """My first task."""
    print 'hello', args
$ paver hello foo bar
---> pavement.hello
hello ['foo', 'bar']

Optionen definieren

Verwenden Sie den Dekorator @ cmdopts, um Optionen zu definieren, und das Argument options, um sie zu erhalten. Übergeben Sie die Option an den Dekorator "@ cmdopts" als Argument für eine Liste, die in einem Tupel der Form "(langer Name, ein Buchstabe, Hilfe)" definiert ist. Wenn Sie `` am Ende eines langen Namens hinzufügen, haben Sie die Möglichkeit, ein Argument zu verwenden.

pavement.py


from paver.easy import *

@task
@cmdopts([
    ('foo', 'f', "The foo"), # -zum--foo
    ('bar=', 'b', "Bar bar bar"), # -b xxx oder--bar=xxx
    ])
def hello(options):
    """My first task."""
    print 'hello', options.foo, options.bar
$ paver hello --foo -b 3
---> pavement.hello
hello True 3

Tatsächlich ist options als globale Variable von paver.easy definiert, auch wenn es nicht als Argument verwendet wird. Wenn Sie also from paver.easy import * ausführen, müssen Sie kein Argument verwenden. Kann auch benutzt werden.

pavement.py


from paver.easy import *

@task
@cmdopts([
    ('foo', 'f', "The foo"),
    ('bar=', 'b', "Bar bar bar"),
    ])
def hello():
    """My first task."""
    print 'hello', options.foo, options.bar

Recommended Posts

Skripterstellung mit Fertigerbefehlsdefinition
Skripterstellung mit Paver-File-Vorgängen
Skripterstellung mit externen Fertigern