Come posso avviare un'istanza di un'applicazione utilizzando Python?
Domanda
Sto creando uno script Python in cui esegue una serie di attività e una di queste attività è avviare e aprire un'istanza di Excel.Qual è il modo ideale per raggiungere questo obiettivo nella mia sceneggiatura?
Soluzione
Mentre il Popen
le risposte sono ragionevoli per il caso generale, lo consiglierei win32api
per questo caso specifico, se vuoi farci qualcosa di utile:
Funziona più o meno così:
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
Preso da un post nella mailing list ma gli esempi in giro non mancano.
Altri suggerimenti
o
os.system("start excel.exe <path/to/file>")
(presumendo che sia nel percorso e sei su Windows)
e anche su Windows, funziona anche start <filename>
, se è già un'estensione associata (come sarebbe xls)
Mi piace popen2 per la capacità di monitorare il processo.
excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()
http://www.python.org/doc/ 2.5.2 / lib / module-popen2.html
EDIT : tieni presente che la chiamata wait () si bloccherà fino a quando il processo non ritorna. A seconda del tuo script, questo potrebbe non essere il comportamento che desideri.
Il modulo sottoprocesso intende sostituire diversi altri moduli e funzioni precedenti, come:
- os.system
- os.spawn *
- os.popen *
- popen2. *
- comandi. *
.
import subprocess
process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
print process_one.pid
Come altri hanno affermato, suggerirei os.system. Nel caso in cui qualcuno stia cercando una soluzione compatibile con Mac, ecco un esempio:
import os
os.system("open /Applications/Safari.app")
os.system (" apri file.xls ")
Mi piace os.startfile("path to file")
poiché apre il file come se avessi fatto doppio clic per aprire.
Ho scoperto che con os.system("start excel filename")
lo ha aperto come un file aperto dal Web e dovevi abilitare la modifica.