为了把sikuli的代码移动到pyunit的框架上,需要在代码里执行windows的command。
使用的方法很简单。Python的 os模块可以调用command line的指令。使用的时候需要import os。示例代码如下:
import os
cmd = 'dir'
os.system(cmd)
在IDE或者windows命令行中运行这段脚本,都会得到当前脚本所在目录的dir信息。
1)在IDE(这里用的是Spyder)中运行这段代码的输出
2)在windows命令行运行这段代码的输出
但是当我试着在这个目录下使用“cd”命令进入其它目录,并调用“dir”命令时,得到的结果确跟我想象的不一样。
import os
os.system('cd D:\Program Files\pythonxy')
os.system('dir')
这段代码的输出仍然跟上面的代码一样,输出的是projects目录下的dir信息。而我期望的输出是pythonxy目录下的信息。这样当你需要在某个目录下运行可执行文件时,就会找不到这个文件。例如运行下面的代码就会报错,因为目录仍然是在python脚本所在的目录下。
import os
os.system('cd D:\Program Files\SPlayer')
os.system('splayer.exe')
Spyder的输出如下:
其原因在于每次os.system都会创建一个shell进程来执行其中的命令,所以两个os.system之间很难建立起关联。这时我们可以用 & 符号把两个命令在一个os.system里连起来执行。代码如下:
import os
os.system('cd D:\Program Files\SPlayer & splayer.exe')
运行这段代码就可以顺利的启动splayer.exe程序。同样采用这种方式也可以查看pythonxy目录下的dir信息。
PS:
&符号在shell中的几种用法
1)三个命令同时执行
command1&command2&command3
2)不管前面命令执行成功没有,后面的命令继续执行
command1;command2;command3
3)只有前面命令执行成功,后面命令才继续执行
command1&&command2