Найти - Пользователи
Полная версия: Запуск ситемной программы из питона под венду.
Начало » Python для экспертов » Запуск ситемной программы из питона под венду.
1 2
ffzema
Привет всем. Помогите разобраться.
Нужно запустить графический инсталятор ООО из под питона. Будет работать так. Из под http сервера запускаю cgi скрипт питона. Из питона пытаюсь вызвать графический инсталятор ООО.
что делаю
import os
os.module("E:\ftp\distrib\office\OOO\setup.exe")
Это не работает.
А вот следующее работает.
import os
os.module("dir")
Таким образом консольные команды срабатыват, а которые запускают графический интерфейс нет.

Просто если в консоли запустить E:\ftp\distrib\office\OOO\setup.exe тоже запускается инсталятор.

Как запустить графический инсталятор ООО из питона?
bialix
os.system
poltergeist
1) А что за функция “module” в модуле “os”? Первый раз такое вижу:)
2) Может путь всё-же так прописать: “E:\\ftp\\distrib\\office\\OOO\\setup.exe” + то, что написал bialix
2a) Я вот везде пишу “/”, если тока не получаю обратное как результат выполнения других команд, питон их нормально переваривает и под виндой и под линухом.

Короче вот: os.system('E:/ftp/distrib/office/OOO/setup.exe')
ffzema
Извините конечно os.system я просто опечатался в конце дня. Текс моегопервого сообщения тот же только os.module заменить на os.system
ffzema
Получилось запустить, когда в путях вместо \ поставил /
Просто почему то не подумал сделать так, ведь в консоли с \ хорошо запускалось.
Всем спасибо за ответ.
bialix
ошибка в том, что в питоне, как и в Си, обратные слэши нужно удваивать, т.е.

os.system(“E:\\ftp\\distrib\\office\\OOO\\setup.exe”)

либо использовать raw-строку

os.system(r“E:\ftp\distrib\office\OOO\setup.exe”)
ffzema
Да и еще
если из питона вы пытаетесь запустить что то в другой папке например
я нахожусь в папке os.system E:\ftp\zema\
чтобы запустить E:/ftp/distrib/office/OOO/setup.exe делаю из питона
os.system(../ftp/distrib/office/OOO/setup.exe) так не получится, так только в никсах, то есть выход из директории не ../ а ..\\ а команда такая
os.system(..\\ftp\\distrib\\office\\OOO\\setup.exe)
Вот винда такие засады приготовила с путями юниксойдам.
poltergeist

>>> os.path.abspath('.')
'C:\\Python25'
>>> os.system('“../Program Files/wscite/SciTE.exe”')


А у меня так работает:) И у вас будет работать, если только вот путь немного подправить: os.system(“../distrib/office/OOO/setup.exe”) при условии что находитесь в “E:\ftp\zema”

Да и это не к чему, os.system - это вызов команды шелла, который используется по дефолту в системе (под виндой это cmd.exe (хотя не факт, т.к. это поправимо), под линуксом - это что-то из *sh, и тоже может меняться). В общем, к чему это я, зачем запускать инсталлятор таким образом, когда можно его запустить стандартным питонским образом, и это будет работать везде одинаково.


>>> os.path.abspath('.')
'C:\\Python25'
>>> subprocess.Popen()


Это тоже замечательно работает:)
ffzema
poltergeist
Спасибо, обязательно поробую, если это работает, то это то что нужно
ZAN
Совсем не нужно вбивать разделители явным образом, ибо в модуле os.path есть для этих целей замечательная функция join.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB