Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2007 14:19:40

ffzema
От:
Зарегистрирован: 2007-08-18
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

Привет всем. Помогите разобраться.
Нужно запустить графический инсталятор ООО из под питона. Будет работать так. Из под 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 тоже запускается инсталятор.

Как запустить графический инсталятор ООО из питона?



Офлайн

#2 Дек. 25, 2007 14:44:58

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

os.system



Офлайн

#3 Дек. 25, 2007 16:10:40

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

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

Короче вот: os.system('E:/ftp/distrib/office/OOO/setup.exe')



Отредактировано (Дек. 26, 2007 08:44:37)

Офлайн

#4 Дек. 26, 2007 07:21:26

ffzema
От:
Зарегистрирован: 2007-08-18
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

Извините конечно os.system я просто опечатался в конце дня. Текс моегопервого сообщения тот же только os.module заменить на os.system



Офлайн

#5 Дек. 26, 2007 09:54:35

ffzema
От:
Зарегистрирован: 2007-08-18
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

Получилось запустить, когда в путях вместо \ поставил /
Просто почему то не подумал сделать так, ведь в консоли с \ хорошо запускалось.
Всем спасибо за ответ.



Офлайн

#6 Дек. 26, 2007 12:20:57

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

ошибка в том, что в питоне, как и в Си, обратные слэши нужно удваивать, т.е.

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

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

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



Офлайн

#7 Дек. 26, 2007 12:57:21

ffzema
От:
Зарегистрирован: 2007-08-18
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

Да и еще
если из питона вы пытаетесь запустить что то в другой папке например
я нахожусь в папке 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)
Вот винда такие засады приготовила с путями юниксойдам.



Офлайн

#8 Дек. 26, 2007 13:34:15

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.


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


Это тоже замечательно работает:)



Отредактировано (Дек. 26, 2007 13:55:41)

Офлайн

#9 Дек. 27, 2007 13:56:50

ffzema
От:
Зарегистрирован: 2007-08-18
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

poltergeist
Спасибо, обязательно поробую, если это работает, то это то что нужно



Офлайн

#10 Дек. 27, 2007 15:06:36

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Запуск ситемной программы из питона под венду.

Совсем не нужно вбивать разделители явным образом, ибо в модуле os.path есть для этих целей замечательная функция join.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version