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 :

Linux - enchainer les executables


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Linux - enchainer les executables
    Bonjour à tous et bonne année 2018 !!!

    Je me permets d'ouvrir un topic car je n'ai malheuresement pas trouvé la réponse à ma question dans le forum

    Je suis sous linux et j'écris un script python me permettant de lancer automatiquement les sous-routines que j'ai concernant du milieu poreux.

    Mon problème c'est que je lance la dernière qui attend 4 arguments dans mon terminal :
    1 pour le mode de traitement
    0 le numéro du premier fichier à traiter
    62 le numéro du dernier fichier à traiter
    1 le pas pour traiter tous les fichiers

    J'aimerai automatiser ceci sachant que je n'ai accès qu'à l'éxécutable et ne peut pas le modifier.


    J'ai essayé plusieurs méthodes ( relier les commandes avec ; || ou &&) mais rien n'y fait, l'éxécutable bloque et attend ces arguments.

    Voici mon code

    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
    while i<len(angles):
    	os.system('mkdir AVALANCHE_'+str(angles[i]))
    	os.system('cd AVALANCHE_'+str(angles[i]))
    	os.chdir('/work/granulaire_2/GRADYM_POUR_ETUDIANTS/CALCULS/AVALANCHE_'+str(angles[i]))
    	os.system("cp ../INITIALISATION_LIT/gradym.x .")
    	os.system("cp ../INITIALISATION_LIT/final.bin .")
    	os.system("cp ../INITIALISATION_LIT/sphe.reli.forceBin.bin .")
    	os.system("cp ../INITIALISATION_LIT/sphe.reli.forceMur.bin .")
    	os.system("cp final.bin in_sim.bin")
    	os.system("cp ../../POST_PROCESSING/POST_VISU/post_visu.x .")
    	os.system("cp ../../POST_PROCESSING/POST_MATLAB/lecture_position_vitesse_dat.m .")
    	
    	fichier=open('sphe.dem','w')
    	fichier.write(debut)
    	fichier.write(str(round(sin_angle[i],4))+"   "+str(round(-cos_angle[i],4))+"   0.     0")
    	fichier.write("\n")
    	fichier.write(fin)
    	fichier.close()
    	
    	os.system('./gradym.x')
    	os.system('./post_visu.x && 1 && 0 && 62 && 1')  #ligne qui pose probleme car non automatisée
    	
    	os.system("cd ..")
    	os.chdir('/work/granulaire_2/GRADYM_POUR_ETUDIANTS/CALCULS')
    	i=i+1
    Je vous souhaite une bonne journée !

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Pour Python, une commande BASH est juste une chaîne de caractères qui sera interprétée et exécutée par BASH que vous pouvez/devez déjà tester sur un terminal avant d'automatiser son lancement depuis un script.
    Dit autrement, si vous écrivez os.system('./post_visu.x && 1 && 0 && 62 && 1') et que çà ne fonctionne pas, c'est parce que votre chaîne de caractères est mal construite et savoir quoi y mettre dépend de BASH et de ./post_visu.x, pas de Python.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci de m'avoir répondu si rapidement.

    D'accord, je dois me pencher sur le BASH pour résoudre ce problème.

    Je me rends compte que j'ai oublié de préciser :
    - je n'ai pas la main sur le post_visu.x (je ne peux que le lancer)
    - les arguments attendus sont indépendants de i, ils valent 1, 0, 62 1.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par niko9870 Voir le message
    D'accord, je dois me pencher sur le BASH pour résoudre ce problème.

    Je me rends compte que j'ai oublié de préciser :
    - je n'ai pas la main sur le post_visu.x (je ne peux que le lancer)
    - les arguments attendus sont indépendants de i, ils valent 1, 0, 62 1.
    Certes mais la question est de savoir passer ces arguments à post_visu.x et la ligne qui fonctionne lorsque vous le lancez "manuellement" depuis BASH devrait être identique à celle passée à os.system.

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Oui oui tout à fait.

    Mais je pense que le problème est plus simple que ça, (ou peut-être pas haha).
    En fait, une fois le ./post_visu.x lancé, mon terminal se bloque et attend les arguments.


    J'aimerai donc forcer python à passer à la ligne suivante sans annuler (crtl +C) mon ./post_visu.x

    J'avais essayé d'appeler un .sh créé à part avec les arguments mais il ne se lance pas non plus toujours bloqué à la ligne du script ./post_visu.x

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par niko9870 Voir le message
    J'avais essayé d'appeler un .sh créé à part avec les arguments mais il ne se lance pas non plus toujours bloqué à la ligne du script ./post_visu.x
    Ce serait bien que vous essayiez de faire fonctionner cela. C'est une redirection avec BASH que vous allez pouvoir tester avant de l'intégrer dans votre script Python.
    Sinon côté Python, on peut certainement faire çà avec le module subprocess mais ce sera plus compliqué.

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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Je te remercie wiztricks !

    Je me suis penché sur le BASH un peu plus, notamment sur les redirections comme tu me l'as conseillé.

    La solution était simple :

    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    ./post_visu.x < entree.txt

    avec entree.txt qui est un fichier texte contenant mes arguments !


    A noter que j'avais essayé le | mais sans succès..


    Bonne journée ! Merci encore

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

Discussions similaires

  1. Le C sous Linux : pas d'execution
    Par adrien357 dans le forum Linux
    Réponses: 3
    Dernier message: 29/06/2006, 13h04
  2. [vc2005] vive les executions qui plantent :'( !!
    Par hiko-seijuro dans le forum MFC
    Réponses: 5
    Dernier message: 17/05/2006, 23h14
  3. Réponses: 4
    Dernier message: 06/05/2006, 21h28
  4. [C++][libpng][WIN&Linux] Récupérer les dimentions d'un P
    Par Invité4 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/04/2006, 12h13
  5. Linux: Inclure les lib dans l'executable
    Par baert dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/09/2005, 23h40

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