日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python执行系统命令的方法

發(fā)布時間:2025/3/20 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python执行系统命令的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 做為系統(tǒng)工程師來說,經常會用到python腳本去調用一下系統(tǒng)命令,現把經常使用的集中調用方法總結如下:

一,os.system(command)

在一個子shell中運行command命令,并返回command命令執(zhí)行完畢后的退出狀態(tài)。這個函數執(zhí)行命令的結果無法保存,只能顯示在標準輸出。但是,命令執(zhí)行是否成功的退出狀態(tài)可以通過變量得到,非0即為不正常。

例:
>>> os.system('ls /tmp')
hsperfdata_root? supervisor.sock? tmp_fifo
0
>>> code=os.system('ls /tmp')
hsperfdata_root? supervisor.sock? tmp_fifo
>>> print code
0


二,os.popen(command[, mode[, bufsize]])

打開一個與command進程之間的管道,函數的返回值是一個連接到管道的文件對象,故可以對文件做讀寫操作(由mode決定rw,mode默認是’r',)。bufsize指定了文件期望的buffer大小,0意味著不是用buffer,1意味著line buffered(行緩沖),負值意味著使用系統(tǒng)默認行為,正值意味著按設定的num值開辟buffer空間;一般終端相關的設備輸出用行緩沖,對文件相關輸出用全緩沖;默認情況下,buffer是全緩沖,加快了文件讀取速度減少了上下文切換。如果mode為’r',可以使用此函數的返回值調用read()來獲取command命令的執(zhí)行結果。

例:

>>> f=os.popen('ls /tmp')????????????
>>> f.readlines()
['hsperfdata_root\n', 'supervisor.sock\n', 'tmp_fifo\n']


三,subprocess

第一種:

subprocess.call(["some_command","some_argument","another_argument_or_path"])

與os.system的功能相同。

第二種:

subprocess.Popen(command,shell=True)

已子進程的方式去執(zhí)行命令,然后返回代表新進程的Popen對象。他可以與新建進程的輸入/輸出/錯誤管道聯(lián)通,并可以獲得新建進程執(zhí)行的返回狀態(tài)等。使用subprocess模塊主要目的就是來替代之前的os,popen,commands等函數或模塊。

例:

執(zhí)行基本的系統(tǒng)命令,直接輸出結果

>>> ret = subprocess.call('ls /tmp',shell=True)
hsperfdata_root? supervisor.sock? tmp_fifo

執(zhí)行系統(tǒng)命令,但是捕捉輸出

>>> f = subprocess.Popen('ls /tmp',shell=True,stdout=subprocess.PIPE)
>>> print f.stdout.readlines()
['hsperfdata_root\n', 'supervisor.sock\n', 'tmp_fifo\n']

創(chuàng)建2個子進程,通過管道把他們連接起來。一個進程的輸出作為另一個進程的輸入

>>> f = subprocess.Popen('ls -l',shell=True,stdout=subprocess.PIPE)
>>> p = subprocess.Popen('wc', shell=True, stdin=f.stdout, stdout=subprocess.PIPE)?
>>> print p.stdout.readlines()
['???? 73???? 652??? 4161\n']


四,commands

commands模塊用于執(zhí)行以字符串形式指定的簡單系統(tǒng)命令,并將其輸出以字符串形式返回,僅使用于unix系統(tǒng)。

第一種:

getoutput(cmd)

在shell中執(zhí)行cmd,返回包含命令標準輸出和標準錯誤流的字符串。

getstatusoutput(cmd)

與getoutput類似,差別在于返回的是二元組(status,output)

例:

>>> out=commands.getoutput('ls /tmp')?
>>> print out
hsperfdata_root
supervisor.sock
tmp_fifo

>>> status,out=commands.getstatusoutput('ls /tmp')?
>>> print status,out
0 hsperfdata_root
supervisor.sock
tmp_fifo



轉載于:https://blog.51cto.com/leejia/1439031

總結

以上是生活随笔為你收集整理的python执行系统命令的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。