在 Linux 中使用 wine 运行 .exe,并在单个命令中指定用户输入

在 Linux 中使用 wine 运行 .exe,并在单个命令中指定用户输入

我想在Linux中执行一个程序XXX.exe,然后在程序要求键盘输入时输入YYY。

我可以通过以下步骤完成此操作:

wine XXX.exe 

然后程序询问:Enter YYY or ZZZ:我输入:YYY作为输入。

我怎样才能将这两个步骤放在一个命令中?我试过了

wine XXX.exe < YYY

但它不起作用... :( 我想把它写在一行中,这样我就可以使用 os.system('wine ....') 在 Python 中执行该行。

答案1

重定向<需要文件用作程序的输入。您的“YYY”不是文件。

如果你在 Bash 中执行此操作,那么你也可以使用<<<重定向,接受文字字符串。然而,不是保证它可以在始终使用 /bin/sh 的 os.system() 中工作。

评论中的建议echo | wine适用于任何 shell。

我想将其写在一行中,以便我可以使用 os.system('wine ....') 在 Python 中执行该行。

这意味着 os.system() 是错误的工具首先。(而且它实际上并不局限于一行……)

除了使用 os.system(),你还可以使用以下方法实现<或重定向的效果|os.popen()或更先进的subprocess模块。例如,如果您想为程序提供输入:

result = subprocess.run(["wine", "XXX.exe"], input=b"YYY\n")

一般subprocess.run()建议,但os.popen()也可以这样做:

proc = os.popen("wine XXX.exe", "w")
proc.write(b"YYY\n")
proc.close()

相关内容