2010-10-07 10 views
2

Je souhaite appeler un fichier .py depuis python. C'est dans le même répertoire. Effectivement, je voudrais le même comportement que d'appeler python foo.py à partir de la ligne de commande sans utiliser aucun des outils de ligne de commande. Comment dois-je faire cela?Appeler un fichier en python

Répondre

4

Il est pas tout à fait clair (du moins pour moi) ce que vous entendez en utilisant "aucun des outils de ligne de commande".

Pour exécuter un programme dans un sous-processus, on utilise généralement le module subprocess. Cependant, si l'appelant et l'appelé sont des scripts python, il existe une autre alternative, qui consiste à utiliser le module multiprocessing.

Par exemple, vous pouvez organiser foo.py comme ceci:

def main(): 
    ... 

if __name__=='__main__': 
    main() 

Ensuite dans le script d'appel, test.py:

import multiprocessing as mp 
import foo 
proc=mp.Process(target=foo.main) 
proc.start() 
# Do stuff while foo.main is running 
# Wait until foo.main has ended 
proc.join()  
# Continue doing more stuff 
+0

+1: On dirait surpuissant mais je l'aime de toute façon. :) – jathanism

+0

@jathanism: C'est tout à fait possible :) Cependant, j'aime appeler des fonctions (ce que permet mp.Process) beaucoup plus que d'appeler des scripts python (via un sous-processus) qui doivent ensuite être optparsed/argparsed. – unutbu

+0

Je ne suis pas en désaccord avec vous. Je suis juste en train de me lancer dans le multitraitement et je suis heureux de voir un tel usage de base. – jathanism

Questions connexes