Запустите винную команду из питона

У меня есть Apache, который обслуживает веб-сервис со скриптом Python. Я пытаюсь выполнить команду WINE из python, но ничего не происходит ...

command1 = 'dir > test.txt'
command2 = 'wine someexecutable.exe inputfile outpufile'
p = subprocess.call(command1, shell=True)
p = subprocess.call(command2, shell=True)

Команда command1 обычно выполняется, и я получаю файл test.txt. Кажется, что command2 вообще не выполняется ... Если я выполняю это вручную из оболочки с пользователем www-data, команда2 ожидает, и я получаю выходной файл -> not a permission problem. Что-то нужно настроить, чтобы позволить Python выполнять команды Wine?

0
задан 8 October 2013 в 17:46

3 ответа

Синтаксис в целом правильный, но вам нужно дать Wine более точный путь к вашему исполняемому файлу. Вы можете увидеть, что происходит в ошибке возврата:

>>> subprocess.call("wine someexecutable.exe inputfile outpufile", shell=True)
wine: cannot find L"C:\\windows\\system32\\someexecutable.exe"
0
ответ дан 8 October 2013 в 17:46

Следующий код должен работать при условии правильной установки wine:

subprocess.call("./filename.exe", shell=True)

Я смог заставить его работать, не вызывая wine напрямую, надеюсь, это будет работать и для вас.

0
ответ дан 8 October 2013 в 17:46

Попробуйте это:

import commands

command1 = 'dir > test.txt'
command2 = 'wine someexecutable.exe inputfile outpufile'

cmd1 = commands.getoutput(command1)
cmd2 = commands.getoutput(command2)

Примечание : иногда буфер канала ОС может заполняться выводом, перенаправленным в канал, поэтому попробуйте модуль команд вместо подпроцесс для этой задачи!

0
ответ дан 8 October 2013 в 17:46

Другие вопросы по тегам:

Похожие вопросы: