У меня есть 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?
Синтаксис в целом правильный, но вам нужно дать Wine более точный путь к вашему исполняемому файлу. Вы можете увидеть, что происходит в ошибке возврата:
>>> subprocess.call("wine someexecutable.exe inputfile outpufile", shell=True)
wine: cannot find L"C:\\windows\\system32\\someexecutable.exe"
Следующий код должен работать при условии правильной установки wine:
subprocess.call("./filename.exe", shell=True)
Я смог заставить его работать, не вызывая wine напрямую, надеюсь, это будет работать и для вас.
Попробуйте это:
import commands
command1 = 'dir > test.txt'
command2 = 'wine someexecutable.exe inputfile outpufile'
cmd1 = commands.getoutput(command1)
cmd2 = commands.getoutput(command2)
Примечание : иногда буфер канала ОС может заполняться выводом, перенаправленным в канал, поэтому попробуйте модуль команд вместо подпроцесс для этой задачи!