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 :

Appel d'un programme tiers dans un script python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Appel d'un programme tiers dans un script python
    Bonjour à tous,
    j'essaie actuellement de lancer plusieurs simulations numériques à la suite. je me sert donc de python pour créer les fichier de configuration du logiciel de simulation (mécanique des milieux anisotropes), puis je me sert de la commande "os.system('Craft',Name,'.in')" avec Name qui est le nom du fichier de configuration, in l'extension, et Craft le logiciel que j'utilise.
    ceci fait, je voudrai traiter les fichiers résultats, modifie les conditions de chargement et relancer les calculs. Si je met la ligne citée au dessus en commentaire, le programme marche (à ceci prés qu'il ne simule rien). Mais si je lance le calcul sur le logiciel Craft, il se lance, mais une fois au bout, python ne reprend pas la suite des instruction, et le script s'arrête. Sauriez vous d'où cela peux venir ?
    Merci d'avance

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    # -*- coding: utf-8 -*-
    """
    Created on Wed May 21 13:29:17 2014
     
    @author: Mats
    """
    import os
    Name = raw_input("Entrez le nom du fichier que vous voulez: (sans l'extension)")
    Traction = [0,0,0,0,0,0] # configuration du chargement [sigma11,sigma22,sigma33,sigma12,sigma13,sigma23]
    Result = [0,0,0,0,0] #Variables de la matrice de rigidité 5 variables car materiau isotrope transverse
    i = 0
    ResultFile = open('Resultats.res','w')
    while i <= 4:
        ## Configuration du fichier de chargement Traction.dat ##
        Tractiof = open("Traction.dat",'w')
        Traction = [0,0,0,0,0,0]
        Traction[i] = 1
        Tractiof.write('s')
        Tractiof.write(Traction[0],' ',Traction[1],' ',Traction[2],' ',Traction[3],' ',Traction[4],' ',Traction[5])
        Tractiof.close()
        ## Appel de Craft ##
        os.system('Craft',Name,'.in')
        ## traitement des résultats ##
        FEntry = open(Name,'.res')
        TableSigma = []
        TableEpsilon = []
        CurrentLine = FEntry.readline()
        while len(CurrentLine) > 0:
            if CurrentLine[0] != '#':
                CurrentlineList = CurrentLine.split()
                if len(CurrentlineList) > 0:
                    TableEpsilon.append([float(CurrentlineList[5]),float(CurrentlineList[6]),float(CurrentlineList[7]),float(CurrentlineList[8]),float(CurrentlineList[9]),float(CurrentlineList[10])])
                    TableSigma.append([float(CurrentlineList[11]),float(CurrentlineList[12]),float(CurrentlineList[13]),float(CurrentlineList[14]),float(CurrentlineList[15]),float(CurrentlineList[16])])
            CurrentLine = FEntry.readline()
        FEntry.close()
        if i == 0:
            ## Determination des 3 premieres variables materiaux ##
            Result[0] = (float(TableEpsilon[0][0])/float(TableSigma[0][0]))
            Result[2] = (float(TableEpsilon[0][1])/float(TableSigma[0][1]))
            Result[3] = (float(TableEpsilon[0][2])/float(TableSigma[0][2]))
            i += 2  # on peux sauter i = 1 car il y a redondance des variables materiau #
        if i == 2: 
            ## Determination de la 4eme variable materiau ##
            Result[1] = (float(TableEpsilon[0][2])/float(TableSigma[0][2]))
            i += 2 # on peux sauter i = 3 car il y a redondance des variables materiau #
        if i == 4:
            ## Determination de la 5eme variable materiau ##
            Result[4] = (float(TableEpsilon[0][4])/float(TableSigma[0][4]))
            i += 1000
    #Sortie des resultats dans un fichier texte
    ResultFile.write('a =', Result[0])
    ResultFile.write('b =', Result[1])
    ResultFile.write('c =', Result[2])
    ResultFile.write('d =', Result[3])
    ResultFile.write('e =', Result[4])

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut et bienvenu sur dvp.
    Ton message pique ma curiosité. Normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system('Craft',Name,'.in')
    doit lever une erreur. La fonction attend un seul argument. De même les gestions de fichiers ne me semblent pas correctes. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FEntry = open(Name,'.res')	# au lieu de FEntry = open(Name + '.res', 'r') ?
    Tu ne dis pas si les exécutions du programme Craft se sont bien passées. Il est facile de contrôler les stdout et sdterr avec le module subprocess (class subprocess.Popen par exemple).

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut C'est pas faux
    Effectivement, je pense que j'ai copié une vielle version du programme, j'avais corrigé de problème.
    j'ai résolu le problème en utilisant le module "subprocess" ainsi qu'avec les redirection de flux sortant et entrants.
    le programme Craft se lançait bien, et à la fin de l'exécution de Craft l'ensemble s’arrêtait tout simplement.
    Merci pour ta réponse

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut ouvrir une URL
    Bonjour à tous,

    je suis débutant en python, et j'aimerais savoir si la communauté python peut m'aider ? :-)

    Alors voila, je veux faire un script (test.py) qui génère une url de connexion au serveur où l'utilisateur pourra ajouter des informations collectées et d'autres qu'il devra renseigner.

    Il faut qu'on puisse utiliser le script de la façon suivante:

    firefox `test.py adresse_serveur path_install` ...

    Quand cette commande est tapée sur le client, on devra obtenir une page qui a les informations suivantes :

    chemin d'installation du code
    adresse IP

    J'ai les informations que je souhaite, mais je n'arrive pas à ouvrir une page web via le module urllib2

    Une idée ?

    Merci beaucoup de votre aide .

  5. #5
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Citation Envoyé par luffy_m Voir le message
    Bonjour à tous,

    je suis débutant en python, et j'aimerais savoir si la communauté python peut m'aider ? :-)

    Alors voila, je veux faire un script (test.py) qui génère une url de connexion au serveur où l'utilisateur pourra ajouter des informations collectées et d'autres qu'il devra renseigner.

    Il faut qu'on puisse utiliser le script de la façon suivante:

    firefox `test.py adresse_serveur path_install` ...

    Quand cette commande est tapée sur le client, on devra obtenir une page qui a les informations suivantes :

    chemin d'installation du code
    adresse IP

    J'ai les informations que je souhaite, mais je n'arrive pas à ouvrir une page web via le module urllib2

    Une idée ?

    Merci beaucoup de votre aide .
    J'ai du mal à comprendre le but, on n'a pas assez d'informations sur le serveur, un fichier qu'il faudrait télécharger !? etc. Mais s'il s'agît d'obtenir le code source d'une page à partir de l'url, voilà comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import http.client
     
    site="www.youtube.com"
    requete="/watch?v=f887aGG-TUj"#par exemple
     
    html = http.client.HTTPConnection(site)
    html.request("GET", requete)
    print(html.getresponse().read())
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    @stalacta :

    Grosso modo je dois faire un script pour ouvrir une page web ( dans l'url je met certaines infos , comme l'IP/OS du client ...) puis lorsque la page s'ouvre on y retrouve les infos envoyé dans l'url sous forme de récapitulatif mais en plus quelques champs de saisi ...

    L'ouverture de la page web je l'af fait via l'import du module webbrowser ...

    Mais j'arrive uniquement à récupérer l'adresse IP du serveur et l'OS du serveur mais pas du client ...

Discussions similaires

  1. Appel d'un programme C dans C++
    Par freestyler1982 dans le forum C++
    Réponses: 1
    Dernier message: 04/12/2007, 10h01
  2. comment faire appel d'une application java dans un script shell?
    Par moradbe dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/02/2007, 19h55
  3. Réponses: 1
    Dernier message: 10/11/2006, 11h04
  4. Appel d'un programme C dans un script shell
    Par Spacy_green dans le forum Linux
    Réponses: 6
    Dernier message: 01/06/2006, 13h01
  5. Réponses: 2
    Dernier message: 03/04/2006, 18h38

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