Subprocess pour gérer les programmes en ligne de commande

Python est un bon choix pour lier des programmes en eux et ainsi créer de nouveaux outils.

L'exemple qui suit met à jour un ancien billet sur la conversion PDF vers JPG, il utilise subprocess et montre comment chaîner deux opérations , la conversion d'un pdf vers ppm effectuée avec «pdftoppm» et la conversion ppm vers jpg avec «convert» :


import subprocess
pdfname = "pdftest.pdf"
jpgname = "image.jpg"

ps = subprocess.Popen(['pdftoppm', '-f', '1', '-l', '1', pdfname], stdout=subprocess.PIPE)
output = subprocess.Popen(['convert', '-', jpgname], stdin=ps.stdout)


Il est possible de lancer des processus en parallèles, récupérer leurs sorties , modifier leurs entrées et communiquer avec eux et les faire communiquer entre eux grace au module subprocess , la doc est ici : https://docs.python.org/fr/3.5/library/subprocess.html