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.
$ easy_install paver
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.
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']
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