Wie kann ich starte eine Instanz einer Anwendung mit Python?
Frage
Ich erstelle einen Python-Skript, wo es eine Reihe von Aufgaben tut und eine dieser Aufgaben zu starten und eine Instanz von Excel zu öffnen. Was ist die ideale Art und Weise, dass in meinem Skript zu bewerkstelligen?
Lösung
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 zu tun:
Es geht in etwa 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
Genommen von einer Mailing-Liste Post aber viele Beispiele gibt es rund.
Andere Tipps
oder
os.system("start excel.exe <path/to/file>")
(vorausgesetzt, es ist auf dem Weg, und du bist auf dem Fenster)
und auch auf Windows, nur start <filename>
funktioniert, auch - wenn es eine bereits zugeordnete Verlängerung (als xls wäre)
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 / Modul-popen2.html
Bearbeiten : beachten Sie, dass Warte () aufrufen, bis der Prozess kehrt blockiert. Je nach Ihrem Skript, kann dies das gewünschte Verhalten nicht sein.
Der 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 schon andere gesagt haben, würde ich vorschlagen, os.system. Falls jemand für eine Mac-kompatible Lösung sucht, ist hier ein Beispiel:
import os
os.system("open /Applications/Safari.app")
os.system ( "open file.xls")
Ich mag os.startfile("path to file")
wie es die Datei öffnet, als ob Sie doppelt geklickt hat, zu öffnen.
Ich fand, dass mit os.system("start excel filename")
es öffnete sie wie eine Datei aus dem Internet geöffnet und man mußte die Bearbeitung ermöglichen.