从Python脚本启动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(我的主操作系统)的环境变量中设置了VBoxManage.exe。
这个Python脚本能识别VBoxManage这个程序,并且能输出它的使用手册,然后就出现了这个……
Syntax error: Invalid command 'VBoxManage startvm WIN7'
你能告诉我怎么在Python脚本里启动一个虚拟机吗?可以直接调用这个.exe文件,或者运行那个.bat文件?
注意:我找过vboxshell.py这个文件,但到现在还没找到……:[
2 个回答
1
subprocess.call() 这个函数需要你传入一个参数列表,像这样:
subprocess.call(['C:\Program Files\Oracle\VirtualBox\VBoxManage.exe',
'startvm',
'WIN7'])
你的代码把 'VBoxManage startvm WIN7' 当作一个整体传给了 VBoxManage.exe,但它其实只想要一个命令(比如 'startvm')。后面的参数(在这个例子中就是 'WIN7')需要单独传入。
另外,使用 subprocess.call() 时,不需要重复写可执行文件的名字。Python 文档中的例子是这样调用 UNIX 命令 "ls -l" 的:
subprocess.call(['ls', '-l'])
换句话说,你不需要再写 'VBoxManage' 这一部分。
1
诀窍是将命令作为单独的参数传递
import subprocess
subprocess.call(["C:\Program Files\Oracle\VirtualBox\VBoxManage.exe", "startvm", "WIN7"])