Python之os.popen和os.system

废话连篇

为了搞个多测试机并行运行也是花了时间研究了下,要使用macaca将多个设备运行起来,当然是需要用设备ID号,服务端口号等等,此处将简单介绍一下关于如何获取设备号。

简单介绍

这里使用os.popen来获取设备号,使用os.system来启动macaca服务(有时间了将macaca的一些经历写写吧)。

两者的区别是:

(1)os.system(cmd)的返回值只会有0(成功),1,2

(2)os.popen(cmd)会把执行的cmd的输出作为值返回。

实际操作

以获取设备号的操作为例。

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time    : 2018/5/20 18:20

# @Author  : --------

# @Site    :

# @File    : adb.py

# @Software: PyCharm

import os

#获取连接设备

GET_ANDROID = "adb devices"

# 使用popen

value_popen = os.popen(GET_ANDROID)

s_v = value_popen.readlines()

print('popem:',s_v)

print('---------------我是分界线----------------')

# 使用system

value_system = os.system(GET_ANDROID)

print('system:',value_system)

运行结果如下:

popen:

 
popen

此方法可以使用read、readline、readlines方法进行内容操作。

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time    : 2018/5/20 18:20

# @Author  : -----

# @Site    :

# @File    : adb.py

# @Software: PyCharm

import os

#获取连接设备

GET_ANDROID = "adb devices"

# 使用popen

value = os.popen(GET_ANDROID)

s_v = value.readlines()

for v in s_v:

    s_value = str(v).replace(" ", "").replace(" ", "")

    if s_value.rfind('device') != -1 and (not s_value.startswith("List")) and s_value != "":

        s_vv = s_value[:s_value.find('device')].strip()

        print(s_vv)

print('---------------我是分界线----------------')

# 使用system

# value_system = os.system(GET_ANDROID)

# print('system:',value_system)

 
进行内容操作

很方便可以将device ID分离出来。

system:

 
system

此方法只是返回一个code值,可操作性比较低。

原文地址:https://www.cnblogs.com/April-Chou-HelloWorld/p/9071797.html