Форум сайта python.su
Привет всем. Помогите разобраться.
Нужно запустить графический инсталятор ООО из под питона. Будет работать так. Из под http сервера запускаю cgi скрипт питона. Из питона пытаюсь вызвать графический инсталятор ООО.
что делаю
import os
os.module("E:\ftp\distrib\office\OOO\setup.exe")
import os
os.module("dir")
Офлайн
os.system
Офлайн
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)
Офлайн
Извините конечно os.system я просто опечатался в конце дня. Текс моегопервого сообщения тот же только os.module заменить на os.system
Офлайн
Получилось запустить, когда в путях вместо \ поставил /
Просто почему то не подумал сделать так, ведь в консоли с \ хорошо запускалось.
Всем спасибо за ответ.
Офлайн
ошибка в том, что в питоне, как и в Си, обратные слэши нужно удваивать, т.е.
os.system(“E:\\ftp\\distrib\\office\\OOO\\setup.exe”)
либо использовать raw-строку
os.system(r“E:\ftp\distrib\office\OOO\setup.exe”)
Офлайн
Да и еще
если из питона вы пытаетесь запустить что то в другой папке например
я нахожусь в папке 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)
Вот винда такие засады приготовила с путями юниксойдам.
Офлайн
>>> 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)
Офлайн
poltergeistСпасибо, обязательно поробую, если это работает, то это то что нужно
Офлайн
Совсем не нужно вбивать разделители явным образом, ибо в модуле os.path есть для этих целей замечательная функция join.
Офлайн