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 :

Width du pipe subprocess


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut Width du pipe subprocess
    Bonjour à tous,

    Je viens vers vous car je ne trouve pas de solution à mon problème.

    J'utilise subprocess pour récupérer les valeurs d'un top. Mon soucis est que la dernière colonne du top est tronquée en fonction de la largeur de la fenêtre quand on le lance dans un shell, et ca réagit exactement pareil avec subprocess.

    En gros quand je fais mon top j'ai la case COMMAND qui est tronquée.

    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def getShellTop():
         out=subprocess.Popen(["top", "-b -n 1 -c"], stdout=subprocess.PIPE)
         (sout,serr) = out.communicate()
         return sout
    Si quelqu'un a une réponse à mon problème je suis preneur

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Le problème vient de la commande top, qui tronque la sortie même si celle-ci est redirigée.
    La commande stty cols nn permet de fixer le nombre de colonnes du terminal à nn (en linux en tout cas).
    Je propose donc ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def getShellTop():
         out=subprocess.Popen("stty cols 200; top -b -n 1 -c", stdout=subprocess.PIPE, shell=True)
         (sout,serr) = out.communicate()
         return sout

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut
    ouaou!! mon sauveur!!

    Franchement je te suis vraiment reconnaissant. J'ai cherché pendant pas mal de temps sur google sans succès

    ca fonctionne parfaitement, merci beaucoup

  4. #4
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut
    ah zut ta solution ne fonctionne que si je lance le script dans une fenetre

    or je compte le lancer en daemon...

    si t'as une idée n'hésite pas, je recherche aussi de mon coté.

    Merci

    [edit] je vais comparer les sorties mais à priori j'ai trouvé ce que je voulais en passant par la commande ps avec l'option w (wide output)

    [edit2] ah non apparement w c'est un peu plus grand mais ca affiche pas tout

    [edit3] AHAHAH!! cette fois j'ai trouvé

    (wide) affichage large. Ne coupe pas les informations pour les limiter à une seule ligne. Pour être exact, chaque `w' autorise une ligne supplémentaire pour chaque processus. Si la ligne supplémentaire n'est pas nécéssaire, elle n'est pas utilisée. Il peut y avoir jusqu'à 100 w.
    il suffit de mettre plusieurs fois w dans la ligne de commande. J'ai plus qu'a tester en daemon mais normalement ça devrait le faire.

    Encore merci pour ton aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/02/2004, 12h46
  2. Pipes - Comment faire ?
    Par Neitsa dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 11/12/2003, 06h44
  3. [C/S] Boken Pipe
    Par Gogoye dans le forum POSIX
    Réponses: 4
    Dernier message: 23/10/2003, 11h48
  4. Réponses: 3
    Dernier message: 21/08/2003, 15h47
  5. Problème : bloquage d'un pipe
    Par Nicaisse dans le forum POSIX
    Réponses: 10
    Dernier message: 24/07/2003, 12h06

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