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 :

Récupérer le contenu de la console


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut Récupérer le contenu de la console
    Bonjour,

    Je suis en apprentissage et, de ce fait, j'ai pour objectif de réaliser un script en python, le script doit:

    Lire un fichier d'entrée qui contient le noms de différents groupe Windows dans l'entreprise, afficher les ID des utilisateurs de chaque groupe grâce à la commande dos "net group <nom du groupe> /DOM"

    Je dois ensuite récupérer les ids que cette commande me sort pour les traiter et c'est la que je sèche.

    Pourriez-vous m'expliquer ou m'aiguiller svp?

    Voici le début de mon code qui fonctionne:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    # -*- coding: utf-8 -*-
     
    # Import du module os pour executer les commandes windows
    import os
     
     
     
     
    with open("groupes.txt", "r") as f:   
         for line in f.readlines(): 
     
            # Création d'une liste vide pour y stocker les noms de groupes   
            groupe = []      
            grp = (line.strip()) 
     
            #Ajout de chaques groupe se trouvant dans le fichier groupes.txt à la liste groupe              
            groupe.append(grp) 
     
     
     
     
            #Traitement de chaque donnée de la liste groupe       
            for x in groupe:     
                net = "net group "
                dom = " /DOM"
     
                #Concatenation de la cmd user
                test = net + x + dom 
     
                # Execute la commande "net group <x> /DOM"     x= chaque valeur de la liste groupe
                user = os.system(test)

    Voici le résultat:

    Nom : help.png
Affichages : 2023
Taille : 11,9 Ko

    Je cherche à récupérer ce qui est en encadré.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Je n'ai pas de système Windows sous la main pour pouvoir tester mais déjà plusieurs choses me choquent:
    • for line in f.readlines(): Pourquoi faire appel à readlines()? Il n'y a pas d'intérêts; f.readlines() va charger d'un coup toutes les lignes en mémoire dans une liste, alors qu'en faisant for line in f: les lignes sont chargées au fur et à mesure.
    • Ensuite tu places: groupe = [] dans la boucle for, ça signifie qu'à chaque tour de boucle ta liste va être effacée, ce qui fait qu'au final elle ne contiendra plus que le dernier groupe.
    • Maintenant est-il vraiment utile de produire cette liste groupe pour ensuite refaire une boucle dessus pour la suite du script? Tu peux très bien tout faire dans la première boucle sans stocker quoi que ce soit.


    Peut-être qu'il serait plus pratique d'utiliser os.popen() ou subprocess.Popen() pour récupérer le contenu de la sortie de ta commande.

  3. #3
    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,

    Avec os.system, vous ne pouvez récupérer la sortie qu'en la redirigeant vers un fichier temporaire. Pour plus de souplesse, il faut pouvoir créer les entrées/sorties standards du process et les remplacer par des "PIPE". Le module subprocess avec la fonction check_output permet de la récupérer dans une variable.

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

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut
    Merci à vous je vais essayer cela et vous tiens au courant

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut
    J'ai allégé mon code,


    wiztricks,

    Je ne me forme au python que depuis 3 jrs et mon entreprise me demande déjà cela ^^'
    Je n'ai vu que les listes, tuples, dico, instructions, boucles pour l'instant.
    Donc pas de def ni de classe ni rien ^^
    Peut tu m’expliquer comment fonctionne subprocess ainsi que les pipe s'il te plat ?

    Merci

  6. #6
    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 dev_python_junior Voir le message
    Peut tu m’expliquer comment fonctionne subprocess ainsi que les pipe s'il te plat ?
    Vous avez déjà des tas de tutos qui racontent çà.
    Votre soucis c'est qu'en quelques jours vous ne pourrez pas assimiler les concepts qu'il serait nécessaire de maîtriser pour être à l'aise. Pour çà, il faut prendre le temps de jouer un peu avec pour comprendre ce que les mots veulent dire et comment un concept pourra être composé avec d'autres.

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

Discussions similaires

  1. Récupérer le contenu de la balise title
    Par roots dans le forum Langage
    Réponses: 2
    Dernier message: 11/09/2005, 16h17
  2. Récupérer le contenu d'un select
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/08/2005, 15h38
  3. [ethereal] récupérer le contenu d'un fichier envoyé ?
    Par in dans le forum Développement
    Réponses: 1
    Dernier message: 19/06/2005, 15h44
  4. [Info]sauvegarder le contenu de la console
    Par frouge dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 18/05/2005, 16h06
  5. [Balise XML] Comment récupérer le contenu entre 2 balise?
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/03/2004, 16h36

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