我想在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()