ffzema
Дек. 25, 2007 14:19:40
Привет всем. Помогите разобраться.
Нужно запустить графический инсталятор ООО из под питона. Будет работать так. Из под 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
Дек. 25, 2007 14:44:58
os.system
poltergeist
Дек. 25, 2007 16:10:40
1) А что за функция “module” в модуле “os”? Первый раз такое вижу:)
2) Может путь всё-же так прописать: “E:\\ftp\\distrib\\office\\OOO\\setup.exe” + то, что написал bialix
2a) Я вот везде пишу “/”, если тока не получаю обратное как результат выполнения других команд, питон их нормально переваривает и под виндой и под линухом.
Короче вот: os.system('E:/ftp/distrib/office/OOO/setup.exe')
ffzema
Дек. 26, 2007 07:21:26
Извините конечно os.system я просто опечатался в конце дня. Текс моегопервого сообщения тот же только os.module заменить на os.system
ffzema
Дек. 26, 2007 09:54:35
Получилось запустить, когда в путях вместо \ поставил /
Просто почему то не подумал сделать так, ведь в консоли с \ хорошо запускалось.
Всем спасибо за ответ.
bialix
Дек. 26, 2007 12:20:57
ошибка в том, что в питоне, как и в Си, обратные слэши нужно удваивать, т.е.
os.system(“E:\\ftp\\distrib\\office\\OOO\\setup.exe”)
либо использовать raw-строку
os.system(r“E:\ftp\distrib\office\OOO\setup.exe”)
ffzema
Дек. 26, 2007 12:57:21
Да и еще
если из питона вы пытаетесь запустить что то в другой папке например
я нахожусь в папке 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
Дек. 26, 2007 13:34:15
>>> 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
Дек. 27, 2007 13:56:50
poltergeist
Спасибо, обязательно поробую, если это работает, то это то что нужно
ZAN
Дек. 27, 2007 15:06:36
Совсем не нужно вбивать разделители явным образом, ибо в модуле os.path есть для этих целей замечательная функция join.