我有 Apache,它使用 Python 脚本提供 Web 服务。我尝试从 Python 执行 WINE 命令,但什么也没发生...
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 用户从 shell 手动执行它,command2 就会执行,我得到输出文件 -> not a permission problem
。是否有需要配置的东西来允许 python 执行 wine 命令?
答案1
语法通常是正确的,但您需要为 Wine 提供更明确的可执行文件路径。您可以在返回错误中看到发生了什么:
>>> subprocess.call("wine someexecutable.exe inputfile outpufile", shell=True)
wine: cannot find L"C:\\windows\\system32\\someexecutable.exe"
答案2
只要 wine 安装正确,下面的代码就可以工作:
subprocess.call("./filename.exe", shell=True)
我可以让它工作而无需直接调用 wine,希望您也能如此。
答案3
尝试这个:
import commands
command1 = 'dir > test.txt'
command2 = 'wine someexecutable.exe inputfile outpufile'
cmd1 = commands.getoutput(command1)
cmd2 = commands.getoutput(command2)
笔记:有时 OS 管道缓冲区可能会被重定向到管道的输出填满,因此请尝试使用命令模块而不是子进程来完成此任务!