日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python腳本執(zhí)行CMD命令并返回結(jié)果的例子

系統(tǒng) 2350 0

最近寫腳本的時(shí)想要用python直接在腳本中去執(zhí)行cmd命令,并且將返回值打印出來(lái)供下面調(diào)用,所以特意查了下,發(fā)現(xiàn)主要有一下幾種方式來(lái)實(shí)現(xiàn),很簡(jiǎn)單:

就拿執(zhí)行adb, adb shell, adb devices 舉例

1.第一種方法 os 模塊的 os.sysytem()

            
import os

os.system('adb)

          

執(zhí)行括號(hào)中系統(tǒng)命令,沒(méi)有返回值

2.第二種方法:os模塊的 os.popen()

            
if __name__=='__main__':
 import os 
 a = os.popen('adb')
 #此時(shí)打開(kāi)的a是一個(gè)對(duì)象,如果直接打印的話是對(duì)象內(nèi)存地址
 
 text = a.read()
 #要用read()方法讀取后才是文本對(duì)象
 
 print(text)
 
 a.close()#打印后還需將對(duì)象關(guān)閉
 
 #下面執(zhí)行adb devices同理
 b = os.popen('adb devices')
 text2 = b.read()
 print(text2)
 b.close()
          

下面是第二種方法的打印結(jié)果:

            
#adb返回的結(jié)果:
 
Android Debug Bridge version 1.0.40
Version 4986621
Installed as D:\androidsdk\platform-tools\adb.exe
 
global options:
 -a   listen on all network interfaces, not just localhost
 -d   use USB device (error if multiple devices connected)
 -e   use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
 -t ID  use device with given transport id
 -H   name of adb server host [default=localhost]
 -P   port of adb server [default=5037]
 -L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]
 
general commands:
 devices [-l]    list connected devices (-l for long output)
 help      show this help message
 version     show version num
 
 
#adb devices 返回的結(jié)果:
List of devices attached
740dc3d1 device
          

未完待續(xù)....

以下內(nèi)容為2019年5月更新

os.popen方法較os.system()而言是獲取控制臺(tái)輸出的內(nèi)容,那就用os.popen的方法了,popen返回的是一個(gè)file對(duì)象,跟open打開(kāi)文件一樣操作了,r是以讀的方式打開(kāi),今天把寫法優(yōu)化了一下:

            
# coding:utf-8
import os
 
# popen返回文件對(duì)象,跟open操作一樣
with os.popen(r'adb devices', 'r') as f:
 text = f.read()
print(text) # 打印cmd輸出結(jié)果
 
# 輸出結(jié)果字符串處理
s = text.split("\n") # 切割換行
result = [x for x in s if x != ''] # 列生成式去掉空
print(result)
 
# 可能有多個(gè)手機(jī)設(shè)備
devices = [] # 獲取設(shè)備名稱
for i in result:
 dev = i .split("\tdevice")
 if len(dev) >= 2:
  devices.append(dev[0])
 
if not devices:
 print('當(dāng)前設(shè)備未連接上')
else:
 print('當(dāng)前連接設(shè)備:%s' % devices)
          

控制臺(tái)輸出如下:

python腳本執(zhí)行CMD命令并返回結(jié)果的例子_第1張圖片

以上這篇python腳本執(zhí)行CMD命令并返回結(jié)果的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 金阳县| 维西| 双柏县| 体育| 淅川县| 宁武县| 石嘴山市| 涟源市| 安达市| 商南县| 开化县| 洛隆县| 普安县| 永康市| 平南县| 乌审旗| 天门市| 平顺县| 湖州市| 依安县| 钟山县| 雅江县| 二手房| 屏边| 连城县| 云龙县| 天全县| 石棉县| 奎屯市| 西宁市| 浦县| 达孜县| 剑河县| 江西省| 揭阳市| 衡阳市| 永平县| 时尚| 上杭县| 卫辉市| 杨浦区|