gpt4 book ai didi

python - 在 Mac OSX 上从 Python 3.6 运行 wine 命令

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:24 24 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个脚本来打开 wine,然后将代码发送到 wine 终端以打开 .exe 程序. .exe 程序也是命令驱动的。

我可以打开 wine,但我不能再打开了:

import shlex, subprocess

line = "/usr/bin/open -n -a /Applications/Wine\ Stable.app"
line2 = '''cd /Applications/application/ && wine application.exe /h1
/k0 Z:/Users/myname/Desktop/File.TXT'''
line = shlex.split(line)
p1 = subprocess.Popen(line)
p1.stdin.write(line2.encode())

上面的不行,wine好像没有收到line2,虽然

/usr/bin/open -n -a /Applications/Wine\ Stable.app

本身没问题(它打开 Wine 但没有别的。)

我对下一步应该做什么感到很困惑。如果可能的话,我想避免额外的依赖,因为它看起来很简单。

最佳答案

在许多情况下(在 Linux 上),以下内容对我有用:

import subprocess

command = 'echo "echo foo && echo bar" | wine cmd > std_out.txt 2> std_error.txt &'
subprocess.Popen(command, shell = True)

(我相信 wine 在 MacOS 上也可以作为命令使用,就像那样。如果我错了请纠正我。)

该命令会启动类似 Windows/DOS 的 shell (wine cmd)。实际上,您可以在 Linux shell 中键入 wine cmd 并按回车键 - 您会发现自己处于 DOS shell 中。下一步是将命令输入 DOS shell。我通过将它们作为字符串输送到其中来做到这一点。在我的示例中,我运行了两个命令:echo fooecho bar。初始的 echo 将命令字符串写入标准输出,随后的 | 打开管道并将字符串转发到 DOS shell。

此外,一旦您向 DOS shell 发送命令,请记住它需要 Windows 路径(当您更改目录等时)。 IE。在将它们发送到 DOS shell 之前,您必须将 Unix 路径转换为 ​​Windows 路径。您可以像这样在命令行上自动转换路径 ...

winepath -w /home/ 2> /dev/null

... 导致 Z:\home\(例如)。或者,以下 Python 片段将为您执行相同的操作:

def convert_unix_path_to_windows_path(in_path):
cmd = ['winepath', '-w', in_path]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = proc.communicate()
return out.decode('utf-8').strip()

关于python - 在 Mac OSX 上从 Python 3.6 运行 wine 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com