Reputation: 192356
I am creating a Python script where it does a bunch of tasks and one of those tasks is to launch and open an instance of Excel. What is the ideal way of accomplishing that in my script?
Upvotes: 14
Views: 55683
Reputation: 8546
I like popen2
for the ability to monitor the process.
excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()
https://docs.python.org/2/library/popen2.html
EDIT: be aware that calling wait()
will block until the process returns. Depending on your script, this may not be your desired behavior.
Upvotes: 7
Reputation: 33
I like os.startfile("path to file")
as it opens the file as if you've double clicked to open.
I found that with os.system("start excel filename")
it opened it like a file opened from the web and you had to enable editing.
Upvotes: 0
Reputation: 41663
While the Popen
answers are reasonable for the general case, I would recommend win32api
for this specific case, if you want to do something useful with it:
It goes something like this:
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
Taken from a mailing list post but there are plenty of examples around.
Upvotes: 12
Reputation: 71
As others have stated, I would suggest os.system. In case anyone is looking for a Mac-compatible solution, here is an example:
import os
os.system("open /Applications/Safari.app")
Upvotes: 3
Reputation: 15960
The subprocess module intends to replace several other, older modules and functions, such as:
.
import subprocess
process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
print process_one.pid
Upvotes: 7
Reputation: 33453
or
os.system("start excel.exe <path/to/file>")
(presuming it's in the path, and you're on windows)
and also on Windows, just start <filename>
works, too - if it's an associated extension already (as xls would be)
Upvotes: 8