python的强大毋庸置疑。当你发现你能偶尔偷懒,省下一部分熟悉shell 语法的时间,只通过python 调用 shell 命令就能实现功能,一定也会对这种方式乐此不疲。在此,对这些用了就会觉得好的方法做个总结。
最常见的os库中,就有两种可用的工具包:
- os.system():command参数可以是linux 下的shell 命令,也可以是windows下的cmd 命令
os.system("adb devices")
执行结果:
List of devices attached
c6e1fc57 unauthorized
127.0.0.1:62001 device
127.0.0.1:62026 device
127.0.0.1:62025 device
特性:
- 该命令不能获取执行后的输出信息,适合用于仅实现执行操作的命令,比如:复制、移动。
- os.popen():command参数可以是linux 下的shell 命令,也可以是windows下的cmd 命令
cmd = os.popen("adb devices") print cmd
<open file 'adb devices', mode 'r' at 0x0000000003BD0150>
执行这个命令后,它没有像os.system那样立即输出结果,通过打印获取到的实例看出,它是打开一个文件
那么,可以读取出来呢?
print cmd.read()
执行结果:
List of devices attached
c6e1fc57 unauthorized
127.0.0.1:62001 device
127.0.0.1:62026 device
127.0.0.1:62025 device读取出的效果是和os.system()一致的。
subprocess.call()
subprocess.call("adb devices",shell=True)
subprocess.call(["adb","devices"],shell=True)
以上两种书写方式都可以和os.popen()的方法有同等效用