363 votes

Comment puis-je faire en sorte qu'un fichier python en exécute un autre?

Comment puis-je faire en sorte qu'un fichier python exécute l'autre?

Par exemple, je dois deux fichiers .py. Je veux qu'un fichier soit exécuté, puis le fasse exécuter l'autre fichier .py.

559voto

apc Points 487

Il y a plus de quelques façons. Je vais les énumérer dans l'ordre inversé de préférence (c'est à dire, premièrement, le meilleur, le pire dernière):

  1. Le traiter comme un module: import file. C'est bien parce que c'est sécurisé, rapide, et facile à entretenir. Le Code de réutilisés comme il est censé être fait. La plupart des bibliothèques Python exécuter à l'aide de plusieurs méthodes tendue sur des lots de fichiers. Fortement recommandé. Notez que si votre fichier s'appelle file.py, votre import devrait pas inclure l' .py extension à la fin.
  2. La tristement célèbre (et dangereux) exec commande: execfile('file.py'). L'insécurité, hacky, généralement la mauvaise réponse. Éviter si possible.
  3. Frayer un processus de shell: os.system('python file.py'). Utiliser quand ils sont désespérés.

72voto

Eric Leschinski Points 14289

Obtenez un fichier python pour en exécuter un autre:

  1. Mettez ceci dans main.py:

     #!/usr/bin/python
    import yoursubfile
     
  2. Mettez ceci dans yoursubfile.py

     #!/usr/bin/python
    print "hello";
     
  3. Exécuter:

     python main.py 
     
  4. Il imprime:

     hello
     

Ainsi, main.py a appelé yoursubfile.py

J'utilise Python 2.7.3 et Ubuntu 12.10

3voto

Adam Zalcman Points 13198

Vous traiteriez l'un des fichiers comme un module python et demanderiez à l'autre de l'importer (comme vous importez des modules python standard). Ce dernier peut alors faire référence à des objets (y compris des classes et des fonctions) définis dans le module importé. Le module peut également exécuter le code d'initialisation dont il a besoin. Voir http://docs.python.org/tutorial/modules.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X