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

Interfaçage autre langage Python Discussion :

Python, ligne de commande et Json.


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Python, ligne de commande et Json.
    Bonjour,

    Je vais essayer d'expliquer mon problème le plus clairement possible. J'ai un programme en python, dans une fonction j'exécute une commande dans un terminal.

    C'est là que ça ce complique.
    Je souhaiterai récupérer le résultat de cette commande et le passer en Json.
    Afin de pouvoir ensuite printer ce résultat Json avec le module Flask.

    On m'a clairement dit que c'était possible, après vous n'avez peut être rien compris car je ne l'explique sûrement pas très bien.
    On m'a dit aussi que je pourrai trouver cela en fouillant dans l'api. Après une journée de recherche en essayant toutes les combines possibles avec Google, je ne suis pas arrivé à mes fins.

    Je suis preneur de tous tuyaux.
    Merci d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Peut-être qu'en montrant ton code on comprendra ce que tu essayes de faire, ou peut-être pas ...

  3. #3
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Comme le dit Vinss, un morceau de code est plus clair.

    Sinon, par rapport à ce que j'ai compris, subprocess, avec une redirection des pipes stdout/stderr. Tu peux ainsi enregistrer le retour de ta commande.

    Autre solution, plus basique: http://python.developpez.com/tutorie...n-bref/#LV-H-2
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Voici un exemple d'une fonction que j'ai déjà réalisé.

    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
     
    def cmdline(cmd): 
            '''
              make and exec of  cmd command on system
            '''
            status, output = commands.getstatusoutput(cmd)
            if status != 0:
                    print cmd + ": command failed!"
                    sys.exit(1)
            else:
                    print output
                    return output
     
     
    def exemple():
               cmd="ls" #command line example 
               cmdline(cmd)
    Mais maintenant j'aimerais arriver au résultat suivant :

    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
     
    def cmdline(cmd): 
            '''
              make and exec of  cmd command on system
            '''
            status, output = commands.getstatusoutput(cmd)
            if status != 0:
                    print cmd + ": command failed!"
                    sys.exit(1)
            else:
                    print output
                    return output
     
     
    def exemple():
               cmd="ls" #command line example 
               # passer la sortie du terminal en Json
               cmdline(cmd)
               # return Json

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Tout d'abord le module commands est documenté comme déprécié, il conviendra d'utiliser le module subprocess à la place.

    Toutefois, on ne fait en général pas appel à des commandes système pour des fonctions qui existent en Python, comme ton exemple avec ls.

    La commande os.listdir retourne elle aussi une liste (pas une arborescence) et la convertir en json ne fait que transformer l'objet liste lui-même en chaîne de texte.

    Ça donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import os
    import json
    >>> fls = os.listdir(os.getcwd()) # il faut un nom de dossier a listdir
    >>> js = json.dumps(fls)
    >>> js
    '["stats_view.py", ".shotwell", ".icons", ".local", "oqapy_stats.py", ".xprofile", .........,  "personal-public.key", "Musique", "Images", ".Xauthority"]'
    Cela répond-t-il à la question ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    J'ai trouvé cette méthode ce matin aussi.

    Je suis obligé d'utiliser le module commands, car le reste du code et bien plus compliqué. La commande avec le ls n'est malheureusement qu'un exemple.

    En tout cas merci beaucoup cette fonction marche très bien. Je vous remercie pour l'ensemble de vos réponses.

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

Discussions similaires

  1. start / stop script python en ligne de commande
    Par airod dans le forum Général Python
    Réponses: 3
    Dernier message: 03/02/2011, 08h44
  2. Stopper un programme python en ligne de commande
    Par un_passant dans le forum Général Python
    Réponses: 11
    Dernier message: 21/10/2010, 18h18
  3. Réponses: 3
    Dernier message: 14/07/2010, 14h27
  4. [Python ligne de commande] L'option -m
    Par dahtah dans le forum Général Python
    Réponses: 1
    Dernier message: 10/06/2010, 18h37
  5. Module Python appelable en ligne de commande
    Par rambc dans le forum Général Python
    Réponses: 4
    Dernier message: 11/05/2009, 23h33

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