La tâche d'exécution de commandes Shell par programme et de capture de leur sortie sous forme de chaîne peut être accomplie à l'aide du module de sous-processus de Python.
Pour le plus simple approche dans les versions Python officiellement maintenues, utilisez la fonction check_output :
import subprocess output = subprocess.check_output(['ls', '-l']) print(output) # Output: b'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
Dans Python 3.5, la fonction run offre une approche plus flexible et moderne :
import subprocess result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE) print(result.stdout.decode('utf-8')) # Output: 'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
Pour une compatibilité étendue et des fonctionnalités avancées, utilisez le constructeur Popen de bas niveau. Avec communicate, vous pouvez capturer la sortie et transmettre l'entrée :
import subprocess p = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) output, _ = p.communicate() print(output) # Output: b'.\n..\nfoo\n'
Exécution de commande Shell (shell=True Argument)
Par défaut , les fonctions exécutent des programmes uniques. Pour exécuter des commandes shell complexes, définissez shell=True. Cependant, cela soulève des problèmes de sécurité.
Gestion des entrées
Pour transmettre une entrée via stdin, spécifiez l'argument du mot-clé d'entrée dans run ou Popen.
Gestion des erreurs
Pour une gestion appropriée des erreurs, utilisez check_output avec stdout=subprocess.STDOUT ou Popen avec stderr=subprocess.STDOUT. Vous pouvez également vérifier le code de retour du sous-processus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!