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 :

recuperer le nom des imprimantes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut recuperer le nom des imprimantes
    Bonjour,

    Je suis sur Kubuntu 14.04 X64 avec python 2.7.6 car j'utilise des anciennes machines.

    J'ai besoin de récupérer le retour de résultat du shell Linux afin d'obtenir le nom des imprimantes.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmd = "lpstat -p -d"
    sortie=os.popen(cmd).read() 
    print sortie
    Résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printer BRFAX is idle.  enabled since sam. 20 avril 2019 15:25:43 CEST
    printer MFC6490CW is idle.  enabled since mar. 11 juin 2019 11:49:02 CEST
    printer PDF is idle.  enabled since mer. 29 mai 2019 20:29:09 CEST
    system default destination: MFC6490CW
    afin d'obtenir le résultat suivant dans une liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BRFAX
    MFC6490CW
    PDF
    je galére, j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resultat_chaine = sortie[8:18]
    print(resultat_chaine)
    Comment puis-je faire ceci ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Je suppose que l'imprimante default est toujours en dernière position et toujours présente.

    Sans doute mieux à faire, mais en phase de digestion j'ai pas trop la tête qui tourne donc voici une proposition très basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    lignes = sortie.split("\n")
    imprimantes = []
    for index, ligne in lignes :
      if index < (lignes.lenght-1) : # on ne veut pas prendre la dernière ligne
        mots = ligne.split(" ")
        if len(mots) > 1 :
          imprimantes.append(mots[1])
    print(imprimantes)
    Sans doute que d'autres s'amuseront avec la puissance du python pour améliorer cela.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Sans doute que d'autres s'amuseront avec la puissance du python pour améliorer cela.
    Un truc comme çà peut être?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> [ z.split(' ')[1] for z in sortie.splitlines()[:-1]]
    ['BRFAX', 'MFC6490CW', 'PDF']
    On peut même sortir les expressions régulières!
    Mais sans code initial, on peut toujours se faire plaisir à poster du joli code mais le PO risque de ne pas trop savoir qu'en faire.... pour autant qu'on ait envie de faire son boulot (les chaines de caractères et les boucles sont quand même des bases qu'on est supposé connaitre...)

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

  4. #4
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Ouais je pensais à un truc du genre, c'est le grand dada de beaucoup de Pythoniste.
    Mais pour ma part je trouve cela puissant, mais difficile à lire, et souvent en manque de contrôle.
    Dans le cas de ce code on a un souci par exemple si split ne retourne pas un tableau de 2 minimum.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Dans le cas de ce code on a un souci par exemple si split ne retourne pas un tableau de 2 minimum.
    Ah bon? Quel soucis?

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

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Si z est une chaîne de caractère sans espace alors split renverra un tableau de un seul élément, placé à l'index 0.
    L'accès à l'index 1 renverra donc une exception IndexError.

Discussions similaires

  1. recuperer les noms des tables
    Par samyco dans le forum JDBC
    Réponses: 6
    Dernier message: 31/07/2007, 10h12
  2. récupération du nom des tables
    Par romram dans le forum Access
    Réponses: 2
    Dernier message: 06/12/2006, 14h16
  3. Recuperer le nom des menus
    Par thibal_kamehouse dans le forum Windows
    Réponses: 4
    Dernier message: 02/05/2006, 17h59
  4. Recuperer le nom des menus
    Par thibal_kamehouse dans le forum C++
    Réponses: 4
    Dernier message: 02/05/2006, 17h59
  5. comment recuperer le nom des champs ?????
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 10h00

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