Ich erstelle ein Python-Skript, wo es eine Reihe von Aufgaben ausführt und eine dieser Aufgaben ist, eine Instanz von Excel zu starten und zu öffnen. Was ist der ideale Weg, um das in meinem Skript zu erreichen?Wie kann ich eine Instanz einer Anwendung mit Python starten?
Antwort
Während die Popen
Antworten angemessen für den allgemeinen Fall, würde ich win32api
für diesen speziellen Fall empfehlen, wenn Sie etwas Nützliches damit tun wollen:
Es geht ungefähr so:
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
Aus a mailing list post entnommen, aber es gibt viele Beispiele herum.
Wenn Sie auch die Excel-Tabelle anzeigen möchten, müssen Sie xl.Visible = True hinzufügen – panofish
oder
os.system("start excel.exe <path/to/file>")
(es ist auf dem Weg der Annahme, und du bist auf dem Fenster)
und auch auf Windows, nur start <filename>
funktioniert auch - wenn es bereits eine zugehörige Erweiterung ist (wie xls wäre)
Beachten Sie, dass unter Windows das cmd-Fenster schnell geöffnet und geschlossen wird, wenn Sie os.system() '. IMHO ist es besser, 'os.startfile()' zu verwenden. – 10basetom
Ich mag popen2 für die Fähigkeit, den Prozess zu überwachen.
excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()
http://www.python.org/doc/2.5.2/lib/module-popen2.html
EDIT: beachten Sie, dass Warte() aufrufen, bis der Prozess kehrt blockiert. Abhängig von Ihrem Skript ist dies möglicherweise nicht Ihr gewünschtes Verhalten.
Das subprocess Modul beabsichtigt mehrere andere, ältere Module und Funktionen, wie zum Beispiel zu ersetzen:
- os.system
- os.spawn *
- os.popen *
- popen2 . *
- Befehle. *
.
import subprocess
process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
print process_one.pid
Wie andere schon gesagt haben, würde ich os.system vorschlagen. Falls jemand für eine Mac-kompatible Lösung sucht, ist hier ein Beispiel:
import os
os.system("open /Applications/Safari.app")
ipc - http://en.wikipedia.org/wiki/Inter-process_communication – warren