Как я могу запустить экземпляр приложения с помощью Python?
Вопрос
Я создаю сценарий Python, который выполняет ряд задач, и одна из этих задач — запустить и открыть экземпляр Excel.Каков идеальный способ добиться этого в моем сценарии?
Решение
Хотя ответы Popen
приемлемы для общего случая, я бы порекомендовал win32api
для этого конкретного случая, если вы хотите сделать что-то полезное с ним:
Это выглядит примерно так:
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
Взято из сообщения в списке рассылки , но Есть много примеров вокруг.
Другие советы
или
os.system("start excel.exe <path/to/file>")
(при условии, что он находится в пути, а вы в Windows)
, а также в Windows, просто start <filename>
тоже работает - если это уже связанное расширение (как xls)
Мне нравится popen2 за возможность следить за процессом.
excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()
http://www.python.org/doc/ 2.5.2 / Библиотека / модуль-popen2.html
РЕДАКТИРОВАТЬ : имейте в виду, что вызов wait () будет заблокирован до тех пор, пока процесс не вернется. В зависимости от вашего сценария это может не соответствовать вашему желанию.
А подпроцесс Модуль предназначен для замены нескольких других, более старых модулей и функций, таких как:
- ОС.система
- ОС.spawn*
- os.popen*
- popen2.*
- команды.*
.
import subprocess
process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
print process_one.pid
Как уже говорили другие, я бы предложил os.system. Если кто-то ищет Mac-совместимое решение, вот пример:
import os
os.system("open /Applications/Safari.app")
os.system (" открыть файл.xls ")
Мне нравится os.startfile("path to file")
, так как он открывает файл, как если бы вы дважды щелкнули, чтобы открыть.
Я обнаружил, что с помощью os.system("start excel filename")
он открылся как файл, открытый из Интернета, и вам пришлось включить редактирование.