使用python我可以让其中任何一个工作:
subprocess.call(['wine', 'cmd'])
os.system("wine cmd")
我正在使用Ubuntu和python 3.5,一旦我进入wine cmd提示我就不能再运行命令,没有办法运行多个命令我已经看过在线工作,他们不会错误输出,它只是打开cmd并暂停,我认为它将cmd作为一个运行命令打开并等待继续下一个命令,它假设是shell而不是wine cmd,我怎么能运行wine cmd里面的命令一旦打开?
编辑:基本上每当我运行一个需要在该命令中进一步输入用户的命令时,我该如何在该命令内部进行交互?
答案 0 :(得分:0)
您可以通过BASH到Python进行构建,如此处的示例代码所示。我将代码剪切并粘贴到python 2.7中并且它有效,但您可能想在3.5
上确认如果您特别需要交互而不是仅运行DOS命令,那么您可以使用subprocess.Popen.communicate与您的脚本交互,然后与wine / dos进行交互。
import subprocess, os, stat
from subprocess import Popen
from subprocess import PIPE
from subprocess import check_output
command_script="/tmp/temp_script.sh"
f1 = open(command_script,'w')
f1.write("#!/bin/bash\n")
#to run a dos command
#f1.write(r'WINEPREFIX=/path/tp/wine/prefix wine cmd /c @mydoscommand argval1'+'\n')
#for example
f1.write(r'wine cmd /c @echo Hello_world'+'\n')
#or to run a specifically pathed executable
#f1.write(r'WINEPREFIX=/path/tp/wine/prefix wine "c:\\Program Files (x86)\\path\\to\\executable.exe" additionalargs '+'\n')
f1.close()
st = os.stat(command_script)
os.chmod(command_script, st.st_mode | stat.S_IEXEC)
p = Popen(command_script, stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
rc = p.returncode
print output
os.remove(command_script)
查看我在Running windows shell commands with python和calling-an-external-command-in-python
中编写部分代码的答案