詳解在Python中執行系統指令的方法

巴扎黑
發布: 2017-09-16 10:07:09
原創
1576 人瀏覽過

最近在做那個測試框架的時候發現對python執行系統命令不太熟悉,所以想著總結下,下面這篇文章主要給大家介紹了關於在Python中執行系統命令的方法,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

Python經常被稱為“膠水語言”,因為它能夠輕易地操作其他程序,輕易地包裝使用其他語言編寫的函式庫。在Python/wxPython環境下,執行外部指令或說在Python程式中啟動另一個程式的方法。

本文將詳細介紹關於Python中如何執行系統指令的相關資料,下面話不多說了,來一起看看詳細的介紹吧。

(1) os.system()

#這個方法直接呼叫標準C的system()函數,僅在一個子終端機執行系統指令,而不能取得執行回傳的資訊。


>>> import os 
>>> output = os.system('cat /proc/cpuinfo') 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> output # doesn't capture output 
0
登入後複製

(2) os.popen()

這個方法執行命令並返回執行後的信息對象,是透過一個管道文件將結果返回。


>>> output = os.popen('cat /proc/cpuinfo') 
>>> output 
<open file &#39;cat /proc/cpuinfo&#39;, mode &#39;r&#39; at 0x7ff52d831540> 
>>> print output.read() 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>><span style="font-size:14px;">
登入後複製

(3) commands模組


>>> import commands 
>>> (status, output) = commands.getstatusoutput(&#39;cat /proc/cpuinfo&#39;) 
>>> print output 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> print status 
0
登入後複製

注意1:在類別unix的系統下使用此方法傳回的回傳值(status)與腳本或指令執行之後的回傳值不等,這是因為呼叫了os.wait()的緣故,具體原因就得去了解下系統wait()的實作了。需要正確的回傳值(status),只需要對返回值進行右移8位元操作就可以了。

注意2:當執行指令的參數或傳回中包含了中文文字,那麼建議使用subprocess。

(4) subprocess模組

#該模組是一個功能強大的子程式管理模組,是替換os.system, os.spawn*等方法的一個模組。


>>> import subprocess 
>>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn&#39;t capture output 
>>> subprocess.run(["ls", "-l"])  <strong># python3.x</strong> doesn&#39;t capture output 
<subprocess.Popen object at 0x7ff52d7ee490> 
>>> total 68 
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents 
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads 
... ... 
>>>
登入後複製

以上是詳解在Python中執行系統指令的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!