Python中嵌入adb命令的方法

1.os.system('cmd')

os.system('cat /proc/cpuinfo')

直接執(zhí)行參數(shù)中傳入的命令攀例,無法獲取輸出和返回值。

2.os.popen('cmd')

output=os.popen('cat /proc/cpuinfo')

print(output.read())

通過 os.popen() 返回的是 file read 的對象丹禀,對其進行讀取 read() 的操作可以看到執(zhí)行的輸出。

3.commands.getstatusoutput('cmd')

(status,output)=commands.getstatusoutput('cat /proc/cpuinfo')

printstatus,output

一個方法就可以獲得到返回值和輸出鞋怀。

PS:commands引用的時候需要加入import commands(可能不支持報No module named Commands)双泪。

subprocess子模塊

摘自:www.jb51.net/article/48086.htm

從Python 2.4開始,Python引入subprocess模塊來管理子進程密似,以取代一些舊模塊的方法:如 os.system攒读、os.spawn*、os.popen*辛友、popen2.*、commands.*不但可以調(diào)用外部的命令作為子進程剪返,而且可以連接到子進程的input/output/error管道废累,獲取相關(guān)的返回信息。

subprocess包中定義有數(shù)個創(chuàng)建子進程的函數(shù)脱盲,這些函數(shù)分別以不同的方式創(chuàng)建子進程邑滨,所以我們可以根據(jù)需要來從中選取一個使用。另外subprocess還提供了一些管理標準流(standard stream)和管道(pipe)的工具钱反,從而在進程間使用文本通信掖看。

1.subprocess.call()

父進程等待子進程完成,返回狀態(tài)碼0面哥,否則拋異常

2.subprocess.check_call()

父進程等待子進程完成哎壳,返回0,否則拋異常

3.subprocess.check_output()

父進程等待子進程完成尚卫,返回子進程向標準輸出的輸出結(jié)果归榕。

4.subprocess.Popen()

與上面的幾個函數(shù)不同,Popen對象創(chuàng)建后吱涉,主程序不會自動等待子進程完成刹泄。必須調(diào)用對象的wait()方法,父進程才會等待 (也就是阻塞block)怎爵。

參數(shù) ? ? ?注釋

argsshell ? ? ? ? ? ? ? ? ? ? 命令特石,可以是字符串或者序列類型(如:list,元組)

bufsize ? ? ? ? ? ? ? ? ? ? ? ?指定緩沖鳖链。0 無緩沖,1 行緩沖,其他 緩沖區(qū)大小,負值 系統(tǒng)緩沖

stdin, stdout, stderr ? ? 分別表示程序的標準輸入姆蘸、輸出、錯誤句柄

preexec_fn ? ? ? ? ? ? ? ? ?只在Unix平臺下有效,用于指定一個可執(zhí)行對象(callable object)乞旦,它將在子進程運行之 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 前被調(diào)用

close_sfs ? ? ? ? ? ? ? ? ? ? 在windows平臺下贼穆,如果close_fds被設(shè)置為True,則新創(chuàng)建的子進程將不會繼承父進程的 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸入兰粉、輸出故痊、錯誤管道。所以不能將close_fds設(shè)置為True同時重定向子進程的標準輸入玖姑、 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸出與錯誤(stdin, stdout, stderr)愕秫。

shell ? ? ? ? ? ? ? ? ? ? ? ? ? ?同上

cwd ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用于設(shè)置子進程的當(dāng)前目錄

env ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用于指定子進程的環(huán)境變量。如果env = None焰络,子進程的環(huán)境變量將從父進程中繼承戴甩。

universal_newlines ? ?不同系統(tǒng)的換行符不同,True -> 同意使用 \n

startupinfo ? ? ? ? ? ? ? ? ?只在windows下有效闪彼,將被傳遞給底層的CreateProcess()函數(shù)甜孤,用于設(shè)置子進程的一些屬 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?性,如:主窗口的外觀畏腕,進程的優(yōu)先級等等

createionflags ? ? ? ? ? ?同上


創(chuàng)建Popen對象:child=subprocess.Popen(...)

可以在父進程中對子進程進行其它操作缴川,如child對象:

child.poll() # 檢查子進程狀態(tài)

child.kill() # 終止子進程

child.send_signal() # 向子進程發(fā)送信號

child.terminate() # 終止子進程

子進程的PID存儲在child.pid

子進程的文本流控制

子進程的標準輸入、標準輸出和標準錯誤如下屬性分別表示:

child.stdin

child.stdout

child.stderr

可以在Popen()建立子進程的時候改變標準輸入描馅、標準輸出和標準錯誤把夸,并可以利用subprocess.PIPE將多個子進程的輸入和輸出連接在一起,構(gòu)成管道(pipe)铭污,如下2個例子:

>>> import subprocess

>>> child1 = subprocess.Popen(["ls","-l"], stdout=subprocess.PIPE)

>>> print child1.stdout.read(),

#或者child1.communicate()

>>> import subprocess

>>> child1 = subprocess.Popen(["cat","/etc/passwd"], stdout=subprocess.PIPE)

>>> child2 = subprocess.Popen(["grep","0:0"],stdin=child1.stdout, stdout=subprocess.PIPE)

>>> out = child2.communicate()

subprocess.PIPE實際上為文本流提供一個緩存區(qū)恋日。child1的stdout將文本輸出到緩存區(qū),隨后child2的stdin從該PIPE中將文本讀取走嘹狞。child2的輸出文本也被存放在PIPE中岂膳,直到communicate()方法從PIPE中讀取出PIPE中的文本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磅网,一起剝皮案震驚了整個濱河市闷营,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌知市,老刑警劉巖傻盟,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嫂丙,居然都是意外死亡娘赴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門跟啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诽表,“玉大人唉锌,你說我怎么就攤上這事「妥啵” “怎么了袄简?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泛啸。 經(jīng)常有香客問我绿语,道長,這世上最難降的妖魔是什么候址? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任吕粹,我火速辦了婚禮,結(jié)果婚禮上岗仑,老公的妹妹穿的比我還像新娘匹耕。我一直安慰自己,他們只是感情好荠雕,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布稳其。 她就那樣靜靜地躺著,像睡著了一般炸卑。 火紅的嫁衣襯著肌膚如雪既鞠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天矾兜,我揣著相機與錄音,去河邊找鬼患久。 笑死椅寺,一個胖子當(dāng)著我的面吹牛牌柄,可吹牛的內(nèi)容都是我干的占调。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼迟螺,長吁一口氣:“原來是場噩夢啊……” “哼篙挽!你這毒婦竟也來了荆萤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤铣卡,失蹤者是張志新(化名)和其女友劉穎链韭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煮落,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡敞峭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝉仇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旋讹。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡殖蚕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沉迹,到底是詐尸還是另有隱情睦疫,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布鞭呕,位于F島的核電站蛤育,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琅拌。R本人自食惡果不足惜缨伊,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望进宝。 院中可真熱鬧刻坊,春花似錦、人聲如沸党晋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽未玻。三九已至灾而,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扳剿,已是汗流浹背旁趟。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留庇绽,地道東北人锡搜。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像瞧掺,于是被迫代替她去往敵國和親耕餐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容