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 :

Interagir avec le shell de linux [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Par défaut Interagir avec le shell de linux
    Bonjour,

    Voilà, je connais la commande os.system mais je rencontre pourtant un problème qui me handicape pas mal.

    Imaginons simplement que je veuille entrer la liste des fichier présent dans un dossier, j'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import os
    for fichier in os.listdir("/path/to/your/files"):
        os.system(fichier + ">> /path/to/the/destination/file")
    En faisant ce code, la console m'indique par exemple pour un fichier :

    "sh: 1: test_ref.rev.1.bt2: not found
    32512"


    J'ai pourtant vérifier que "fichier" de la boucle for était un string

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 704
    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 704
    Par défaut
    Salut,

    Citation Envoyé par timber89 Voir le message
    J'ai pourtant vérifier que "fichier" de la boucle for était un string
    L'erreur vous dit qu'il ne trouve pas de fichier nommé "test_ref.rev.1.bt2" dans le répertoire courant. Ce qui n'est pas si absurde puisque vous êtes allé le chercher dans "/path/to/your/files" (i.e. "ailleurs").

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Par défaut
    Oui c'était simplement un problème de syntaxe

    J'ai oublié de mettre les espaces et d'écrire "echo" aussi

    Au final ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import os
    for fichier in os.listdir("/path/to/your/files"):
        os.system("echo " + fichier + " >> /path/to/the/destination/file")
    Merci beaucoup

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 704
    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 704
    Par défaut
    Salut,

    Si votre but n'est pas de jouer avec os.system, je me permet de vous signaler l'existence du module shutil dans les bibliothèques standards. Il apporte une fonction copyfile. Elle évite d'avoir à repasser par le "shell" (via os.system) pour juste copier un fichier.

    Si votre but est de jouer à os.system et voir comment communiquer avec le shell, çà serait peut être pas mal de regarder aussi ce que fait le module subprocess.

    C'est vous qui voyez.

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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Par défaut
    En fait, je fais un master complémentaire de bioinformatique et tout ce que je connais en informatique, je l'ai appris par moi-même sur le tas. C'est ce qui explique que je peux poser des questions qui ont l'air bête. Je ne suis jamais sûr de rien parce que ça fait 3 mois maintenant que je m'amuse avec bash et python. J'adore ça mais je fais encore des erreurs de débutant (typiquement les espaces que j'aie oublié dans mon code du premier post)

    Ici je dois analyser 60 fichiers et faire la liste d'un paramètre, le script est prêt mais je voulais qu'il m'indique aussi quelle donnée correspond à quelle fichier qu'il a analysé. C'est pour ça que je veux d'abord copier le nom du fichier, tout de suite après je le "process"

    J'ai vu qu'il y avait énormément de possibilité, comme par exemple de lancer des programmes à certaine heure et je suis sûr que je vais devoir m'y frotter. Alors merci de m'indiquer déjà le nom du module qui me permettra de me lancer dans ces manipulations

    P.S. Avant je ne connaissais pas Linux mais maintenant je trouve que c'est le top pour programmer

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 704
    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 704
    Par défaut
    Salut,

    Pas la peine de vous auto-flageller parce que vous débutez: nous avons tous été débutant un jour.

    Citation Envoyé par timber89 Voir le message
    Ici je dois analyser 60 fichiers et faire la liste d'un paramètre, le script est prêt mais je voulais qu'il m'indique aussi quelle donnée correspond à quelle fichier qu'il a analysé. C'est pour ça que je veux d'abord copier le nom du fichier, tout de suite après je le "process" D
    Hu?!? Il n'y a probablement que vous qui sachiez à quoi correspond tout çà...
    Ce qui est important (ou pas) c'est de savoir exprimer ce qu'on veut faire (histoire de pouvoir le partager, en discuter, comprendre le "quoi") et d'arriver à le traduire en "code" (ou chaînes de traitements) qui fonctionne.
    Les gens qui prennent le temps de vous lire dans un forum ne sont pas dans votre tête, ni dans votre entourage...
    Or en français les mots ont leur sens dans un contexte et si on n'en fait pas partie, on distingue les mots, mais on peut avoir des difficultés à en comprendre le sens (que vous leur donnez).
    note: dans la discussion quelqu'un notait que dans le PEP 20 de Python était écrit "Although that way may not be obvious at first unless you're Dutch" à propos de "There should be one -- and preferably only one -- obvious way to do it.". Ca dit que ce qui est évident pour vous ne l'est pas forcément pour d'autres (et réciproquement).

    Tout çà pour dire que poster du code pour accompagner vos propos aide beaucoup a comprendre ce que vous voulez...

    Citation Envoyé par timber89 Voir le message
    J'ai vu qu'il y avait énormément de possibilité, comme par exemple de lancer des programmes à certaine heure et je suis sûr que je vais devoir m'y frotter. Alors merci de m'indiquer déjà le nom du module qui me permettra de me lancer dans ces manipulations
    Sur Linux, le nom de l'ordonnanceur à regarder s'appelle "cron".
    C'est lui qui pourra lancer un programme à intervalles régulier. Peu importe que ce programme soit écrit avec Python ou dans un autre langage.

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

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

Discussions similaires

  1. [Python 2.X] Interragir avec le shell de linux
    Par timber89 dans le forum Général Python
    Réponses: 5
    Dernier message: 10/03/2015, 19h16
  2. Un http get avec le shell...
    Par kitov dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 11/02/2006, 12h34
  3. [Kylix] Erreur "File not Found : Windows.dcu"
    Par derrick23_2003 dans le forum EDI
    Réponses: 4
    Dernier message: 27/12/2005, 11h18
  4. interagir avec la webcam
    Par black_code dans le forum Modules
    Réponses: 10
    Dernier message: 16/08/2005, 00h52
  5. Réponses: 14
    Dernier message: 09/08/2004, 13h42

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