python3调用adb命令_Python如何通过subprocess调用adb命令详解

前言

本文主要给大家介绍了关于使用Python通过subprocess调用adb命令,subprocess包主要功能是执行外部命令(相对Python而言)。和shell类似。

换言之除了adb命令外,利用subprocess可以执行其他的命令,比如ls,cd等等。

在电脑上装好adb工具,配置好adb的环境变量,先确保shell中可以调用adb命令。

代码示例

Python2.7

类 Adb,封装了一些adb的方法

import os

import subprocess

class Adb(object):

""" Provides some adb methods """

@staticmethod

def adb_devices():

"""

Do adb devices

:return The first connected device ID

"""

cmd = "adb devices"

c_line = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]

if c_line.find("List of devices attached") < 0: # adb is not working

return None

return c_line.split("\t")[0].split("\r\n")[-1] # This line may have different format

@staticmethod

def pull_sd_dcim(device,target_dir='E:/files'):

""" Pull DCIM files from device """

print "Pulling files"

des_path = os.path.join(target_dir,device)

if not os.path.exists(des_path):

os.makedirs(des_path)

print des_path

cmd = "adb pull /sdcard/DCIM/ " + des_path

result = subprocess.Popen(cmd,stderr=subprocess.PIPE).communicate()

print result

print "Finish!"

return des_path

@staticmethod

def some_adb_cmd():

p = subprocess.Popen('adb shell cd sdcard&&ls&&cd ../sys&&ls',stderr=subprocess.PIPE)

return_code = p.poll()

while return_code is None:

line = p.stdout.readline()

return_code = p.poll()

line = line.strip()

if line:

print line

print "Done"

some_adb_cmd方法执行一连串的命令。各个命令之间用&&连接。

接着是一个死循环,将执行结果打印出来。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值