
怎么来执行cmd命令呢? 在做手机端自动化这块儿的时候, 有时候大家会碰到需要去执行cmd命令来完成测试用例的情况。下面这篇文章重点给大家讲解一下执行cmd命令的具体方法是什么。1、使用os.()方法这个对象是用来执行cmd指令的, 在执行之后, cmd输出的内容会直接在控制台显示出来, 如果返回结果是0, 那就表示执行成功了。示例代码# coding:utf-8import osos.system(ls)需要补充说明的是, 使用os.()这种方法来执行cmd指令是比较简单粗暴的处理方式, 这种方式存在的问题在于没有办法获取到由cmd输出的具体内容。PPS: os.() 这个方法在执行完毕以后, 它会返回一个十六位的二进制数, 这个数的低位部分用来存放被杀死的信号号码, 而高位部分则存放的是脚本的退出状态码,也就是说, 当在脚本里面执行了“exit 1”这样的代码之后, os. 函数返回值的最高几位数字就会变成 1, 要是在这个时候, 它的低位数字是 0的话, 那么这个函数的最终返回值就是那个组合好的数, 把这个结果换算成十进制的话, 得到的数值就是 256。2、使用os.popen()方法os.popen()这个方法的作用是用来打开一个管道, 它在Unix系统中是可以用的。os.popen返回出来的结果是一个file对象, 这个对象的操作方式, 和用open函数去打开一个文件时的操作是一模一样的。popen()这个方法的语法格式, 目前看起来如下面的这样展示。os.popen(command[, mode[, bufsize]])参数:command– 使用的命令。mode – 模式权限可以是 ‘r(默认) 或 ‘w。bufsize – 指明了文件需要的缓冲大小0意味着无缓冲1意味着行缓冲其它正值表示使用参数大小的缓冲大概值以字节为单位。负的bufsize意味着使用系统的默认值一般来说对于tty设备它是行缓冲对于其它文件它是全缓冲。如果没有改参数使用系统的默认值。示例代码# coding:utf-8import os# popen返回文件对象同open操作一样f os.popen(rls,r)l f.read()print(l)f.close()关于如何推荐处理作为文件的对象而返回的结果, 其方法是:with os.popen(cmd,r) as p:r p.read()在使用这个工具的时候, 用户不需要去显示地书写p.close()这样的代码内容。补充说明一下, 这里所使用的os.popen这个方法, 它的特性是非阻塞的。3、使用.Popen这一方式进行调用。在.4版本之后, 提供了这个模块来产生子进程, 并且能够连接到子进程的标准输入、标准输出以及错误流中, 还可以获得子进程的返回值。.Popen()的定义如下class subprocess.Popen( args,bufsize0,executableNone,stdinNone,stdoutNone,stderrNone,preexec_fnNone,close_fdsFalse,shellFalse,cwdNone,envNone,universal_newlinesFalse,startupinfoNone,creationflags0)关于这些参数的含义和用途, 我们在此不做具体的详细说明。下面是一段比较简单的示例代码:# coding:utf-8import subprocessp subprocess.Popen(ls, shellTrue, stdoutsubprocess.PIPE)r p.stdout.read()print(r)补充说明: 这里提供了两种用来调用子程序的方法。其中, .call()这种方式是会发生阻塞的, 而.Popen()这种方式则是非阻塞的。