2008-10-29 4 views

Antwort

10

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.

+0

Wenn Sie auch die Excel-Tabelle anzeigen möchten, müssen Sie xl.Visible = True hinzufügen – panofish

0

os.system ("open file.xls")

+0

Hat „offen“ Arbeit auf Nicht-Mac OS X-Systeme? – mipadi

+0

Wahrscheinlich funktioniert auch auf NeXTstep. Aber sicher nicht Windows oder UNIX. Da die Frage nach Excel gestellt wird, würde ich von OS X oder Windows ausgehen. – ephemient

8

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)

+3

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

7

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.

7

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 
1

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")