GNU/Linux >> Tutoriels Linux >  >> Linux

Comment stocker le résultat d'une commande shell exécutée dans une variable en python ?

commandes.getstatusoutput fonctionnerait bien pour cette situation. (Obsolète depuis Python 2.6)

import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))

os.popen fonctionne pour cela. popen - ouvre un tube vers ou depuis la commande. La valeur de retour est un objet fichier ouvert connecté au tube, qui peut être lu. split('\n') convertit la sortie en liste

import os
list_of_ls = os.popen("ls").read().split('\n')
print list_of_ls
import os
list_of_call = os.popen("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'").read().split('\n')
print list_of_call

Utilisez le subprocess module à la place :

import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)

Edit :c'est nouveau dans Python 2.7. Dans les versions antérieures, cela devrait fonctionner (avec la commande réécrite comme indiqué ci-dessous) :

import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]

En remarque, vous pouvez réécrire

cat syscall_list.txt | grep f89e7000

À

grep f89e7000 syscall_list.txt

Et vous pouvez même remplacer la déclaration entière par un seul awk script :

awk '/f89e7000/ {print $2}' syscall_list.txt

Mène à :

import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])

Linux
  1. Comment utiliser la commande basename ?

  2. Comment affecter la sortie d'une commande à une variable Shell ?

  3. Comment obtenir la propre adresse IP et l'enregistrer dans une variable dans un script shell ?

  4. Comment définir une variable égale à la sortie d'une commande dans Grub2 ?

  5. Linux - Comment supprimer la variable d'environnement "http_proxy" en Python ?

Comment exécuter une commande Shell avec Python

Comment stocker une commande Linux en tant que variable dans un script shell

Obtenir le complément du résultat d'une commande Ls ?

Comment exécuter une commande dans un script shell ?

Comment puis-je boucler sur la sortie d'une commande shell ?

Comment définir une variable d'environnement dans GDB à l'aide de la commande shell ?