Forum Programmation.python bash -> python et conseils

Posté par  .
Étiquettes : aucune
0
14
juil.
2006
Bonjour,

Je commence à me débrouiller pour écrire des usines à gaz en python qui ne fonctionnent pas toujours comme je le voudrais. Mais ça vient petit à petit.

Maintenant, j'aimerais que vous me donniez votre avis ou vos idées:

- existe t-il une façon simple de faire un cut avec puthon comme on le fait en shell (ex: cat /etc/passwd |cut -d ":" -f3). J'y arrive, mais 40 lignes python contre 1 en bash, je suis, AMHA, à côté de la plaque.
- Je voudrais faire un "tableau" dans un fichier de catte façon:
Utilisateur[tab]UID[tab]Occupation de /home/$user
J'arrive à quelque chose avec python, mais c'est vraiment énorme. Comment aborderiez vous le problème ? (je n'attends pas forcément du code, mais plutôt une sorte d'organigramme pour arriver au résultat)
- J'ai un programme avec une interface graphique contenant un bouton et un textLabel. Quand j'appuie sur le bouton, le nombre des secondes de l'horloge est affiché dans le textlabel avec une ligne "self.texteLabel1.setText(secondes)". Ca, ça fonctionne bien.
Je veux maintenant sousclasser mon extraction des secondes. J'importe ma classe dans mon programme principal, j'extrais bien les secondes mais je n'arrive plus à modifier le textLabel avec la commande du dessus parce que ce n'est plus du "self" , vu que c'est dans une classe extérieure. Comment dois je faire et où je me trompe ?

Merci de vos réponses
  • # split ?

    Posté par  (site web personnel) . Évalué à 1.

    pour faire "comme cut", tu devrait utiliser la fonction split sur les chaines.

    Pareil pour ton "tableau", un split sur chaque ligne te permettra de le lire sans problemes
  • # cut en python

    Posté par  (site web personnel) . Évalué à 5.

    > - existe t-il une façon simple de faire un cut avec puthon comme
    > on le fait en shell (ex: cat /etc/passwd |cut -d ":" -f3). J'y arrive,
    > mais 40 lignes python contre 1 en bash, je suis, AMHA, à côté
    > de la plaque.

    #! /usr/bin/python

    file = open('/etc/passwd', 'r')
    lines = file.readlines()

    for i in lines:
    print i.split(':')[2]

    file.close()

    Je te conseille de lire le tutorial python sur http://docs.python.org .
  • # One-liner

    Posté par  . Évalué à 4.

    En une ligne :
    [l.split(':') for l in open("/etc/passwd").read().split('\n') if l]
  • # module csv

    Posté par  . Évalué à 3.

    Pour ton 2e point, si tu veux un truc du genre "format Excel", utilises le module csv :

    import csv

    w = csv.DictWriter(file("monfichier.csv", ("Utilisateur", "UID", "Occupation")))
    w.writerow({"Utilisateur" : "toto", "UID" : "0", "Occupation" : "42%" })

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.