La partie de Python qui ressemble le moins au langage de script est que vous devez ```importer un sous-processus; subprocess.call ("ls -l") `` pour exécuter une commande externe, ce qui est ennuyeux.
Paver définit une fonction sh () '' qui facilite l'exécution de commandes externes. Cela peut également être importé avec
from paver.easy import * ''.
Si vous écrivez sh ("ls -l /")
, la commande sera exécutée via le shell.
Par défaut, la sortie de la commande exécutée est affichée telle quelle dans la sortie standard, mais si vous spécifiez capture = True
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
Comme les méthodes de la classe path
, la fonction `` sh () '' affiche uniquement la commande et ne l'exécute pas réellement lorsque le paver est exécuté en mode dryrun.
pavement.py
from paver.easy import *
@task
def barusu():
sh("rm -rf /")
$ paver -n barusu
---> pavement.barusu
rm -rf /