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 :

Ex�cuter un programme (avec des options) avec subprocess.call


Sujet :

Python

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 65
    Par d�faut Ex�cuter un programme (avec des options) avec subprocess.call
    Bonsoir.
    Je souhaite ex�cuter dans un programme python un fichier qui s'appelle pdflatex.exe
    Celui-ci s'applique � un autre fichier dont l'extension est .tex avec des options.
    Dans la console Windows, je tape ceci pour que �a marche :
    pdflatex.exe -output-directory F:/Poubelle/essai F:/Poubelle/essai/essai.tex
    (-output-directory F:/Poubelle/essai doit �tre �crit avant le nom du fichier tex et est obligatoire ici)

    Dans Python2.7, j'utilise le module subprocess avec cette syntaxe:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    programme = "pdflatex.exe"
    argument = '-output-directory '+self.chemin_dossier_exercice+'/'+self.nom_exercice+' '+self.chemin_dossier_exercice+'/'+self.nom_exercice+'/'+self.nom_exercice+'.tex'
    subprocess.call([programme, argument])
    argument contient bien la cha�ne qui doit �tre pass�e � pdflatex::
    -output-directory F:/Poubelle/essai F:/Poubelle/essai/essai.tex

    �a ne marche pas.
    Je n'ai pas de message dans la console Python, ni dans la console Windows.
    Le log de pdflatex.exe m'indique: FATAL pdflatex - The command line options could not be processed. FATAL pdflatex - Info: optionError="unknown option"
    Comment faire pour que l'option -output-directory F:/Poubelle/essai soit reconnue ?
    J'ai essay� avec un autre s�parateur de chemin (\\), en mettant des doubles-guillemets autour de cette cha�ne (l� j'ai une console windows qui s'ouvre avec ce message d'erreur: This is pdfTeX, Version 3.14159265-2.6-1.40.17 (MiKTeX 2.9.6100 64-bit) entering extended mode! Undefined control sequence)
    Merci pour les r�ponses.

  2. #2
    Expert confirm�
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 094
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 094
    Par d�faut
    Il y a plusieurs choses � dire,

    1. Pour lier r�pertoires et fichiers, le plus s�r reste l'utilisation du module os.path avec join.
    2. J'ai l'impression qu'il y a 3 arguments -output-directory, F:/Poubelle/essai et F:/Poubelle/essai/essai.tex, ce qui fait une longueur de liste � 4 �l�ments et non 2 comme tu le mets.
    3. call, il me semble attend que le processus soit termin� pour rendre la main, dans ta situation je privil�gierai la classe Popen, qui n'attend pas la fin du process pour rendre la main.


    Une fois que tu modifies ton code, n'h�sites pas � montrer les modification fa�tes...

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

    Lorsque vous utilisez la fonction d'une biblioth�que comme subprocess.call, vous �tes suppos� lire le mode d'emploi avant de vouloir coder avec.
    Dans celui ci, on vous indique que "args" doit �tre une cha�ne de caract�res ou une liste et on vous indique comment passer de l'un � l'autre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    >>> import shlex
    >>> s = "pdflatex.exe -output-directory F:/Poubelle/essai F:/Poubelle/essai/es
    sai.tex"
    >>> shlex.split(s)
    ['pdflatex.exe', '-output-directory', 'F:/Poubelle/essai', 'F:/Poubelle/essai/
    essai.tex']
    >>>
    ainsi que les contraintes qu'imposent l'un ou l'autre.

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

Discussions similaires

  1. [XL-2010] Comment compter des cellules avec des couleurs avec une condition
    Par Aimey dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 20/11/2015, 03h23
  2. Parser un JSON avec des variables avec des "-" et des ":"
    Par Quentin33 dans le forum Windows Phone
    R�ponses: 2
    Dernier message: 22/05/2011, 01h04
  3. R�ponses: 1
    Dernier message: 14/06/2009, 23h40
  4. Charger un module automatiquement avec des options debian
    Par ZiMo dans le forum Administration syst�me
    R�ponses: 4
    Dernier message: 22/12/2005, 14h22
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    R�ponses: 4
    Dernier message: 02/04/2005, 13h45

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