Comment puis-je lancer une instance d'une application à l'aide de Python?
Question
Je crée un script Python dans lequel il effectue un grand nombre de tâches. L'une de ces tâches consiste à lancer et à ouvrir une instance d'Excel. Quelle est la manière idéale d’y parvenir dans mon script?
La solution
Bien que les Popen
réponses soient raisonnables pour le cas général, je recommanderais win32api
pour ce cas particulier, si vous voulez faire quelque chose d'utile avec:
Cela ressemble à ceci:
from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open('C:\\Documents and Settings\\GradeBook.xls')
xl.Visible = True # optional: if you want to see the spreadsheet
Extrait de une publication sur une liste de diffusion , mais il y a beaucoup d'exemples autour.
Autres conseils
ou
os.system("start excel.exe <path/to/file>")
(en supposant que c'est dans le chemin et que vous êtes sur Windows)
et aussi sous Windows, start <filename>
ça marche aussi - s'il s'agit déjà d'une extension associée (comme le serait xls)
J'aime popen2 pour sa capacité à surveiller le processus.
excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()
http://www.python.org/doc/ 2.5.2 / lib / module-popen2.html
MODIFIER : sachez que l'appel de wait () sera bloqué jusqu'au retour du processus. Selon votre script, il se peut que ce ne soit pas votre comportement souhaité.
Le module sous-processus vise à remplacer plusieurs modules et fonctions plus anciens, tels que:
- os.system
- os.spawn *
- os.popen *
- popen2. *
- commandes. *
.
import subprocess
process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
print process_one.pid
Comme d’autres l’ont dit, je suggèrerais os.system. Si vous recherchez une solution compatible Mac, voici un exemple:
import os
os.system("open /Applications/Safari.app")
os.system (" open file.xls ")
J'aime os.startfile("path to file")
car il ouvre le fichier comme si vous aviez double-cliqué dessus pour l'ouvrir.
J'ai constaté qu'avec os.system("start excel filename")
cela l'ouvrait comme un fichier ouvert à partir du Web et que vous deviez activer l'édition.