我有这个简单的脚本..这不起作用
import subprocess
subprocess.call(["C:\Program Files\Oracle\VirtualBox\VBoxManage.exe", "VBoxManage startvm WIN7"])
我在bat文件中也有同样的东西......效果很好。
cd C:\Program Files\Oracle\VirtualBox
VBoxManage startvm "WIN7"
我在Windows 8.1(我的主机操作系统)的PATH中有VBoxManage.exe。
python脚本理解VBoxManage可执行文件并吐出它的手册然后这个..
Syntax error: Invalid command 'VBoxManage startvm WIN7'
你能给我一个从python脚本中启动VM的方法,可以通过直接调用.exe或运行.bat文件吗?
注意:我搜索了vboxshell.py文件,但未在任何地方找到它......:[
答案 0 :(得分:1)
subprocess.call()需要一个参数列表,如下所示:
subprocess.call(['C:\Program Files\Oracle\VirtualBox\VBoxManage.exe',
'startvm',
'WIN7'])
您的代码将'VBoxManage startvm WIN7'作为VBoxManage.exe的单个参数传递,VBoxManage.exe希望在那里只找到一个命令(例如'startvm')。后续参数(本例中为“WIN7”)需要单独传递。
此外,使用subprocess.call()时无需重复执行可执行文件名。 Python文档中的示例调用UNIX命令“ls -l”,如下所示:
subprocess.call(['ls', '-l'])
换句话说,您不需要重复'VBoxManage'部分。
答案 1 :(得分:1)
诀窍是将命令作为单独的参数传递
import subprocess
subprocess.call(["C:\Program Files\Oracle\VirtualBox\VBoxManage.exe", "startvm", "WIN7"])