python3 et commande bash

Page principale

Répondre à ce message
Auteur: anne.guilde@free.fr
Date:  
À: ML Guilde
Sujet: python3 et commande bash
bonjour,

J'ai essayé par mal de choses pour pouvoir lancer la commande bash
suivante sous python 3 :
lsblk --list -pn -o NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL | awk '$3 ~ "usb"
{print $1" "$5$6$7}'

le résultat sous bash
>>> cde1 = "lsblk --list -pn -o NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL |

awk '$3 ~ \"usb\" {print $1\" \"$5$6$7}'"
# lsblk --list -pn -o NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL | awk '$3 ~
"usb" {print $1" "$5$6$7}'
/dev/sdc HGSTHTS721010A9E630
/dev/sr0 hpDVDRAMGT30L

Avec python 3 la seule commande qui a fonctionné
>>> import os
>>> cde1 = "lsblk --list -pn -o NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL |

awk '$3 ~ \"usb\" {print $1\" \"$5$6$7}'"
>>> os.system(cde1)

/dev/sdc HGSTHTS721010A9E630
/dev/sr0 hpDVDRAMGT30L
0
>>> resutat = os.system(cde1)

/dev/sdc HGSTHTS721010A9E630
/dev/sr0 hpDVDRAMGT30L
>>>


J'ai mis le résultat dans un fichier

>>> cde3 = "lsblk --list -pn -o NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL |

awk '$3 ~ \"usb\" {print $1\" \"$5$6$7}' > /tmp/result_lsblk"
>>> resutat = os.system(cde3)


# cat /tmp/result_lsblk
/dev/sdc HGSTHTS721010A9E630
/dev/sr0 hpDVDRAMGT30L

J'aurais aimé mettre cela dans un tableau mais je n'ai pas encore
regardé si cela existe avec python 3, les tableaux.
les /dev/s* dans un tableau et le reste de chaque ligne dans un autre
tableau.

---------------------

Les commandes que je n'ai pas réussi à faire fonctionner

>>> from subprocess import call
>>> cde2 = ["lsblk", "--list", "-pn", "-o",

"NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL", "|", "awk", "'$3", "~", "\"usb\"",
"{print", "$1\" " "\"$5$6$7}'"]
>>> call(cde2)

lsblk: | : n'est pas un périphérique bloc
lsblk: awk : n'est pas un périphérique bloc
lsblk: '$3 : n'est pas un périphérique bloc
lsblk: ~ : n'est pas un périphérique bloc
lsblk: "usb" : n'est pas un périphérique bloc
lsblk: {print : n'est pas un périphérique bloc
lsblk: $1" "$5$6$7}' : n'est pas un périphérique bloc
32


>>> cde2 = ["lsblk", "--list", "-pn", "-o",

"NAME,TYPE,TRAN,SERIAL,VENDOR,MODEL", "\|", "awk", "'$3", "~",
"\"usb\"", "{print", "$1\" " "\"$5$6$7}'"]
>>> call(cde2)

lsblk: \| : n'est pas un périphérique bloc
lsblk: awk : n'est pas un périphérique bloc
lsblk: '$3 : n'est pas un périphérique bloc
lsblk: ~ : n'est pas un périphérique bloc
lsblk: "usb" : n'est pas un périphérique bloc
lsblk: {print : n'est pas un périphérique bloc
lsblk: $1" "$5$6$7}' : n'est pas un périphérique bloc
32
>>>



>>> subprocess.Popen(cde2)

<subprocess.Popen object at 0x7f2d5c32d160>
>>> lsblk: \| : n'est pas un périphérique bloc

lsblk: awk : n'est pas un périphérique bloc
lsblk: '$3 : n'est pas un périphérique bloc
lsblk: ~ : n'est pas un périphérique bloc
lsblk: "usb" : n'est pas un périphérique bloc
lsblk: {print : n'est pas un périphérique bloc
lsblk: $1" "$5$6$7}' : n'est pas un périphérique bloc

Il y a certainement d'autres solutions...

Merci pour vos commentaires
Anne