国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python下調(diào)用Linux的Shell命令的方法

2020-02-15 21:49:13
字體:
供稿:網(wǎng)友

有時(shí)候難免需要直接調(diào)用Shell命令來完成一些比較簡(jiǎn)單的操作,比如mount一個(gè)文件系統(tǒng)之類的。那么我們使用Python如何調(diào)用Linux的Shell命令?下面來介紹幾種常用的方法:

1. os 模塊

1.1. os模塊的exec方法族

Python的exec系統(tǒng)方法同Unix的exec系統(tǒng)調(diào)用是一致的。這些方法適用于在子進(jìn)程中調(diào)用外部程序的情況,因?yàn)橥獠砍绦驎?huì)替換當(dāng)前進(jìn)程的代碼,不會(huì)返回。( 這個(gè)看了點(diǎn) help(os)  --> search "exec" 的相關(guān)介紹,但是沒太搞明白咋使用)

1.2. os模塊的system方法

system方法會(huì)創(chuàng)建子進(jìn)程運(yùn)行外部程序,方法只返回外部程序的運(yùn)行結(jié)果。這個(gè)方法比較適用于外部程序沒有輸出結(jié)果的情況。

>>> import os >>> os.system("echo /"Hello World/"") # 直接使用os.system調(diào)用一個(gè)echo命令 Hello World   ——————> 打印命令結(jié)果 0     ——————> What's this ? 返回值? >>> val = os.system("ls -al | grep /"log/" ") # 使用val接收返回值 -rw-r--r-- 1 root  root  6030829 Dec 31 15:14 log ——————> 此時(shí)只打印了命令結(jié)果 >>> print val    0     ——————> 注意,此時(shí)命令正常運(yùn)行時(shí),返回值是0 >>> val = os.system("ls -al | grep /"log1/" ") >>> print val   256     ——————> 使用os.system調(diào)用一個(gè)沒有返回結(jié)果的命令,返回值為256~ >>> 

注意:上面說了,此方法脂肪會(huì)外部程序的結(jié)果,也就是os.system的結(jié)果,所以如果你想接收命令的返回值,接著向下看~

1.3. os模塊的popen方法

當(dāng)需要得到外部程序的輸出結(jié)果時(shí),本方法非常有用。比如使用urllib調(diào)用Web API時(shí),需要對(duì)得到的數(shù)據(jù)進(jìn)行處理。os.popen(cmd) 要得到命令的輸出內(nèi)容,只需再調(diào)用下read()或readlines()等 如a=os.popen(cmd).read()

>>> os.popen('ls -lt')     # 調(diào)用os.popen(cmd)并不能得到我們想要的結(jié)果 <open file 'ls -lt ', mode 'r' at 0xb7585ee8> >>> print os.popen('ls -lt').read()  # 調(diào)用read()方法可以得到命令的結(jié)果 total 6064 -rwxr-xr-x 1 long  long   23 Jan 5 21:00 hello.sh -rw-r--r-- 1 long  long   147 Jan 5 20:26 Makefile drwxr-xr-x 3 long  long   4096 Jan 2 19:37 test -rw-r--r-- 1 root  root  6030829 Dec 31 15:14 log drwxr-xr-x 2 long  long   4096 Dec 28 09:36 pip_build_long drwx------ 2 Debian-gdm Debian-gdm 4096 Dec 23 19:08 pulse-gylJ5EL24GU9 drwx------ 2 long  long   4096 Jan 1 1970 orbit-long >>> val = os.popen('ls -lt').read()  # 使用變量可以接收命令返回值 >>> if "log" in val:     # 我們可以使用in來判斷返回值中有木有一個(gè)字符串 ...  print "Haha,there is the log" ... else: ...  print "No,not happy" ... Haha,there is the log 

2. commands 模塊

使用commands模塊的getoutput方法,這種方法同popend的區(qū)別在于popen返回的是一個(gè)文件句柄,而本方法將外部程序的輸出結(jié)果當(dāng)作字符串返回,很多情況下用起來要更方便些。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 眉山市| 得荣县| 阿拉尔市| 安仁县| 寿阳县| 大化| 微博| 德令哈市| 舞阳县| 遵义县| 星座| 泾川县| 仁怀市| 深泽县| 普陀区| 定陶县| 离岛区| 德兴市| 万盛区| 来安县| 太仓市| 陇西县| 治多县| 中阳县| 皋兰县| 孟州市| 南宫市| 玛多县| 江山市| 喜德县| 保山市| 分宜县| 临猗县| 安多县| 宿迁市| 南陵县| 柳林县| 大埔区| 五指山市| 恩施市| 定西市|