IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

subprocess et argparse [Python 3.X]


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ETUDIANT
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Par défaut subprocess et argparse
    Bonsoir, j'ai fais un script python qui me permet d'obtenir des stats NFS tout en utilisant argparse pour pouvoir obtenir qu'une seule stat, le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import sys
    import subprocess
    import argparse
     
     
    parser = argparse.ArgumentParser()
    parser.add_argument("-a", action='store_true', help="access stats")
    parser.add_argument("-c", action='store_true', help="close stats")
    parser.add_argument("-r", action='store_true', help="read stats")
    parser.add_argument("-w", action='store_true', help="write stats")
    args = parser.parse_args()
     
     
    if len(sys.argv)==1:
            subprocess.Popen("nfsstat -l", shell=True)
    elif args.a:
        subprocess.Popen("nfsstat -l | grep 'access:' | awk '{print $5}' ", shell=True)
    elif args.c:
        subprocess.Popen("nfsstat -l | grep 'close:' | awk '{print $5}' ", shell=True)
    elif args.r:
        subprocess.Popen("nfsstat -l  | grep 'read:' | awk '{print $5}' ", shell=True)
    elif args.w:
        subprocess.Popen("nfsstat -l | grep 'write:' | awk '{print $5}' ",shell=True)
    Donc si je lance mon script sans argument ( "python myscript.py" ), j'obtiens toute les stats (une par ligne grace au " -l ")
    en revanche, si j'utilise l'argument -a par exemple (python myscript.py -a), j'obtiens qu'une stat :
    52145

    En soit mon script fonctionne, j'obtiens bien le résultat souhaité.
    Y a-t'il un autre moyen pour faire ceci ? en ne faisait qu'un seul subprocess ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par hayee Voir le message
    Y a-t'il un autre moyen pour faire ceci ? en ne faisait qu'un seul subprocess ?
    Il n'y a qu'un seul subprocess... mais à cause des "pipes" de "nfsstat -l | grep 'access:' | awk '{print $5}' ". chacun en crée 2. Peut être vous parlez de ceux là?
    Peut être que vous voulez n'avoir qu'une seule ligne avec subprocess.Popen et construire les arguments à passer en fonction de ce qui a été reçu dans sys.argv?
    Le plus simple serait d'aller lire directement ces stats dans /proc/net/rpc/nfs[d]

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ETUDIANT
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Par défaut
    Peut être que vous voulez n'avoir qu'une seule ligne avec subprocess.Popen
    tout d'abord merci pour la réponse,
    c'est ça, je souhaiterais une seule ligne avec subprocess tout en gardant mes arguments, qui pour chacun d'entre eux, me permettrais de grep une seule stat choisie parmis toutes celles que j'ai si je lance mon script sans argument, une piste ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par hayee Voir le message
    c'est ça, je souhaiterais une seule ligne avec subprocess tout en gardant mes arguments, qui pour chacun d'entre eux, me permettrais de grep une seule stat choisie parmis toutes celles que j'ai si je lance mon script sans argument, une piste ?
    Fabriquer une chaîne de caractères en concaténant des variables?
    Normalement, c'est ce qu'on apprend dans n'importe quel tuto... ou en lisant la documentation.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ETUDIANT
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Par défaut
    effectivement ca me parait logique maintenant, merci wiztricks !
    résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pid, /proc/ et Subprocess
    Par emmanuel_dumas dans le forum Général Python
    Réponses: 1
    Dernier message: 12/04/2010, 12h40
  2. sortie des subprocess
    Par salsbo dans le forum Général Python
    Réponses: 2
    Dernier message: 11/01/2010, 06h59
  3. Width du pipe subprocess
    Par RiPSO dans le forum Général Python
    Réponses: 3
    Dernier message: 22/12/2009, 11h19
  4. erreur import subprocess
    Par free_dom dans le forum Général Python
    Réponses: 7
    Dernier message: 06/07/2009, 16h37
  5. Toplevel et subprocess
    Par frites.saucisse dans le forum Tkinter
    Réponses: 7
    Dernier message: 31/03/2008, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo