Der am wenigsten skriptsprachliche Teil von Python ist das Ärgernis, einen Unterprozess importieren zu müssen; subprocess.call ("ls -l"), um einen externen Befehl auszuführen.
Paver definiert eine sh ()
Funktion, die die Ausführung externer Befehle erleichtert. Dies kann auch mit aus paver.easy import *
importiert werden.
Wenn Sie sh ("ls -l /")
schreiben, wird der Befehl über die Shell ausgeführt.
Standardmäßig wird die Ausgabe des ausgeführten Befehls wie in der Standardausgabe angezeigt, wenn Sie jedoch "capture = True" angeben
pavement.py
from paver.easy import *
import os
@task
def list():
ret = sh("ls -l /", capture=True)
print(len(ret.splitlines()))
$ paver list
---> pavement.list
ls -l /
22
dryrun
Wie die Methoden der Klasse path
zeigt die Funktion sh ()
den Befehl nur an und führt ihn nicht aus, wenn der Fertiger im Trockenlaufmodus ausgeführt wird.
pavement.py
from paver.easy import *
@task
def barusu():
sh("rm -rf /")
$ paver -n barusu
---> pavement.barusu
rm -rf /