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 :

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


Sujet :

Python

  1. #1
    Membre à l'essai
    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
    Points : 14
    Points
    14
    Par défaut Interragir avec le shell de linux
    Bonjour,

    Je suis un peu nouveau en programmation et j'essaie d'écrire un script qui doit interragir avec le shell de Linux.

    L'idée générale est d'aller compter le nombre de ligne de plusieurs fichiers, contenus dans un même dossier, et de l'afficher dans un fichier.
    J'ai parcouru le forum et j'ai vu que la commande os.system permet d'interragir avec le shell mais je n'arrive pas à l'encapsuler pour l'incorporer dans des fonctions.
    Prenons un cas concret avec le script que j'ai écrit, il n'est pas fini mais il permet de comprendre le problème que je rencontre.
    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
    32
    33
     
     
    # -*- coding: utf8 -*-
     
    ######"importation des modules ########
     
    from os import system
     
    ############# écriture des fonctions ##########
     
    def reads_count(region, sample, data):
    	"count the number of reads for each region"
    	n = 0
    	for line in fd:
        		n += 1
    	nbre_reads = str(region) + "," + str(n) + "\n"
    	fd.write(nbre_reads)
     
    ####### mise en route du programme #########
     
    sample = raw_input(os.system("taper le chemin du sample à analyser"))
    data = raw_input(os.system("taper le chemin et le fichier à créer"))
    region = raw_input(os.system("taper la region à analyser"))
     
    fs = open(sample, 'r')
    fd = open(data, 'w')
     
    try:
    	reads_count(region, sample, data)
    	print(nbre_reads)
    finally:
    	fs.close()
    	fd.close()
    Voilà, dans ce cas-ci, j'essaie d'indiquer le chemin d'accès du shell dans la fonction reads_count pour que la fonction cherche le fichier à traiter que j'aurai indiquer, ainsi que le fichier de sortie qu'il doit créer.
    Malheureusement ceci ne fonctionne pas. J'ai essayé de simples attributions comme path = os.system("pwd"). Ceci applique la commande pwd du shell mais quand je tape path, python m'indique 0.

    Avez-vous une idée de ce que je pourrais faire pour rendre ma fonction valide?

    Un grand merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    D'où sort cette idée saugrenue d'utiliser os.system ?

    Simplement comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sample = raw_input("Chemin du sample: ")
    Et ce sont les deux fichiers ouverts (fs et fd) que tu dois passer à la fonction, par leur noms.



    Edit: Si tu débutes, utilise Python 3

  3. #3
    Membre à l'essai
    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
    Points : 14
    Points
    14
    Par défaut
    ah oui je cherche peut-être midi à 14h moi en fait ^^'

    et alors pour la fonction, je devrais en fait écrire def reads_count(fs,fd) à la place de def reads_count(sample, data). C'est bien ça?

  4. #4
    Membre à l'essai
    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
    Points : 14
    Points
    14
    Par défaut
    super ça fonctionne, voilà mon script pour info :

    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
     
    # -*- coding: utf8 -*-
     
    ######importation des modules#######
     
    from os import system
     
    #####définition des fonctions#######
     
    def reads_count(fs,fd):
    	"count the number of reads for each region"
    	n = 0
    	for line in fs:
        		n += 1
    	nbre_reads = str(region) + "," + str(n) + "\n"
    	fd.write(nbre_reads)
    	print(nbre_reads)
     
    sample = raw_input("chemin du sample à analyser : ")
    data = raw_input("chemin et le fichier à créer : ")
    region = raw_input("region à analyser : ")
    fs = open(sample, 'r')
    fd = open(data, 'w')
     
    try:
    	reads_count(fs,fd)
    finally:
    	fs.close()
    	fd.close()
    Merci beaucoup, j'étais en train de me couper les cheveux en 4 pour un problème qui n'existait pas ^^'

    Mais en fait, à quoi peut bien servir la fonction os.system si on peut directement indiquer les chemins à suivre dans le programme?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 362
    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 362
    Points : 36 894
    Points
    36 894
    Par défaut
    Citation Envoyé par timber89 Voir le message
    Mais en fait, à quoi peut bien servir la fonction os.system si on peut directement indiquer les chemins à suivre dans le programme?
    A lancer un programme externe (interagir avec le shell linux) quand on ne peut pas faire autrement.

    - W

  6. #6
    Membre à l'essai
    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
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    A lancer un programme externe (interagir avec le shell linux) quand on ne peut pas faire autrement.

    - W
    Merci beaucoup
    Je repenserai à cette commande si je dois lancer un programme du shell à partir de python alors

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

Discussions similaires

  1. [Python 2.X] Interagir avec le shell de linux
    Par timber89 dans le forum Général Python
    Réponses: 5
    Dernier message: 16/03/2015, 21h14
  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. probleme avec jbuilder 2005 sur linux
    Par foussil dans le forum JBuilder
    Réponses: 1
    Dernier message: 28/12/2005, 13h37
  4. [Kylix] Erreur "File not Found : Windows.dcu"
    Par derrick23_2003 dans le forum EDI
    Réponses: 4
    Dernier message: 27/12/2005, 11h18
  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