Как я могу запустить экземпляр приложения, используя Python? - PullRequest
12 голосов
/ 29 октября 2008

Я создаю скрипт Python, где он выполняет кучу задач, и одна из этих задач - запустить и открыть экземпляр Excel. Каков идеальный способ добиться этого в моем сценарии?

Ответы [ 7 ]

10 голосов
/ 29 октября 2008

Хотя ответы 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

Взято из сообщения в списке рассылки , но вокруг множество примеров.

8 голосов
/ 29 октября 2008

или

os.system("start excel.exe <path/to/file>")

(при условии, что он находится на пути, и вы находитесь на окнах)

, а также в Windows, просто start <filename> тоже работает - если это уже связанное расширение (как xls)

7 голосов
/ 30 октября 2008

Модуль подпроцесса предназначен для замены нескольких других, более старых модулей и функций, таких как:

  • os.system
  • os.spawn *
  • os.popen *
  • popen2. *
  • команды. *

.

import subprocess

process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])

print process_one.pid
7 голосов
/ 29 октября 2008

Мне нравится popen2 за возможность следить за процессом.

excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()

http://www.python.org/doc/2.5.2/lib/module-popen2.html

РЕДАКТИРОВАТЬ : имейте в виду, что вызов wait () будет блокироваться до тех пор, пока процесс не вернется. В зависимости от вашего сценария это может не соответствовать вашему желанию.

2 голосов
/ 15 июня 2011

Как уже говорили другие, я бы предложил os.system. Если кто-то ищет совместимое с Mac решение, вот пример:

import os
os.system("open /Applications/Safari.app")
0 голосов
/ 09 января 2019

Мне нравится os.startfile("path to file"), поскольку он открывает файл, как если бы вы дважды щелкнули, чтобы открыть.

Я обнаружил, что с os.system("start excel filename") он открылся, как файл, открытый из Интернета, и вам пришлось включить редактирование.

0 голосов
/ 29 октября 2008

os.system ("open file.xls")

...