从Python脚本启动VirtualBox VM

时间:2014-07-23 12:02:12

标签: python batch-file subprocess virtual-machine virtualbox

我有这个简单的脚本..这不起作用

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文件,但未在任何地方找到它......:[

2 个答案:

答案 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"])